我有一个文件每行有一个JSON。下面是一个示例:与Python拼接的嵌套数据
{
"product": {
"id": "abcdef",
"price": 19.99,
"specs": {
"voltage": "110v",
"color": "white"
}
},
"user": "Daniel Severo"
}
我想创建一个如列的拼花文件:
product.id, product.price, product.specs.voltage, product.specs.color, user
我知道,实木复合地板具有使用的Dremel算法嵌套的编码,但我一直没能够在Python中使用它(不知道为什么)。
我是一个沉重的熊猫和DASK用户,所以管道,我试图构造是json data -> dask -> parquet -> pandas
,虽然如果任何人有创建和使用Python在地板阅读这些嵌套编码的一个简单的例子,我认为这将足够好:d
编辑
所以,在永久居民挖后,我发现这一点:https://github.com/dask/fastparquet/pull/177
这基本上是我想做的事情。尽管如此,我仍然无法完成这项工作。我如何告诉dask/fastparquet我的product
列是嵌套的?
- dask版本:0.15.1
- fastparquet版本:0.1.1
fastparquet大概可以*读取*如上所述的镶木地板文件,但不能写入它们。这是因为熊猫数据框(目标结构)很少会看起来像这样。您可以将架构自己扁平化为熊猫数据框,并且可以在写入时使用JSON(object_encoding = {'specs':'JSON'})编码任何重复值(列表,字典)。 – mdurant
(注意:MAP和LIST镶木地板类型的书写可以用于fastparquet,但在我看来,似乎比需求更合理) – mdurant
做过类似的事情。我会很快在这里发布一个例子作为答案。谢谢! –