我经常使用pandas groupby生成堆叠的表。但是,我通常希望将生成的嵌套关系输出到json。有没有办法从它生成的堆栈表中提取嵌套的json文件?
假设我有一个df,比如:
year office candidate amount
2010 mayor joe smith 100.00
2010 mayor jay gould 12.00
2010 govnr pati mara 500.00
2010 govnr jess rapp 50.00
2010 govnr jess rapp 30.00
我能做到:
grouped = df.groupby('year', 'office', 'candidate').sum()
print grouped
amount
year office candidate
2010 mayor joe smith 100
jay gould 12
govnr pati mara 500
jess rapp 80
真漂亮!当然,我真正想做的是通过命令沿着grouped.to_json行得到嵌套的json。但这个功能是不可用的。有解决办法吗?
所以,我真正想要的是:
{"2010": {"mayor": [
{"joe smith": 100},
{"jay gould": 12}
]
},
{"govnr": [
{"pati mara":500},
{"jess rapp": 80}
]
}
}
唐
我看了一下上面的解决方案,发现它只适用于3个层次的嵌套。此解决方案适用于任何级别。
我不认为熊猫有任何内置的东西来创建一个嵌套的数据字典。下面是一些代码,它们通常适用于具有多索引的序列,使用
defaultdict
嵌套代码遍历MultIndex的每个级别,将层添加到字典中,直到最深的层被分配给序列值。
我知道这是个老问题,但我最近碰到了同样的问题。这是我的解决办法。我从chrisb的例子中借了很多东西(谢谢!)。
这样做的好处是,您可以传递一个lambda,以便从您想要的任何可枚举项以及每个组中获取最终值。
在这个问题中,您可以这样调用这个函数:
第一个参数也可以是一个数据数组,甚至不需要熊猫。
相关问题 更多 >
编程相关推荐