我有一个包含以下列且没有重复项的 DataFrame:
['region', 'type', 'name', 'value']
可以看作是一个层次结构,如下所示
grouped = df.groupby(['region','type', 'name'])
我想将此层次结构序列化为 JSON 对象。
如果有人感兴趣,这背后的动机是最终将一个可视化组合在一起,例如this one http://bl.ocks.org/mbostock/4063582这需要一个JSON
file.
为此,我需要转换grouped
分为以下内容:
new_data['children'][i]['name'] = region
new_data['children'][i]['children'][j]['name'] = type
new_data['children'][i]['children'][j]'children'][k]['name'] = name
new_data['children'][i]['children'][j]'children'][k]['size'] = value
...
where region
, type
, name
对应于层次结构的不同级别(索引为i
, j
and k
)
Pandas/Python 有没有一种简单的方法可以做到这一点?
沿着这些思路的一些东西可能会让你到达那里。
from collections import defaultdict
tree = lambda: defaultdict(tree) # a recursive defaultdict
d = tree()
for _, (region, type, name, value) in df.iterrows():
d['children'][region]['name'] = region
...
json.dumps(d)
矢量化解决方案会更好,也许可以利用 groupby 的速度,但我想不出这样的解决方案。
还看一下df.groupby(...).groups
,它返回一个字典。
也可以看看这个答案 https://stackoverflow.com/a/19189366/1221924.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)