Pandas 转 D3. 将数据框序列化为 JSON

9

我有一个DataFrame,包含以下列且没有重复:

['region', 'type', 'name', 'value']

可以将其视为以下层次结构:
grouped = df.groupby(['region','type', 'name'])

我希望将这个层次结构序列化为JSON对象。
如果有人感兴趣,背后的动机是最终制作出像这个可视化效果,需要一个JSON文件。
为了做到这一点,我需要将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
...

其中 region, type, name 对应层次结构的不同级别(由 i, jk 索引)。

在Pandas/Python中有简单的方法来实现吗?

2个回答

3

有些类似这样的东西可能会帮助你到达那里。

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,它返回一个字典。

另请参阅此答案


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接