Ame*_*ina 8 python json pandas d3.js
我有一个包含以下列的DataFrame,没有重复项:
['region', 'type', 'name', 'value']
Run Code Online (Sandbox Code Playgroud)
可以看作层次结构如下
grouped = df.groupby(['region','type', 'name'])
Run Code Online (Sandbox Code Playgroud)
我想将此层次结构序列化为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
...
Run Code Online (Sandbox Code Playgroud)
其中region,type,name对应于不同的水平层次结构的(由索引i,j和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)
Run Code Online (Sandbox Code Playgroud)
矢量化解决方案会更好,也许可以利用 groupby 的速度,但我想不出这样的解决方案。
另请看一下df.groupby(...).groups,它返回一个字典。
另请参阅此答案。
| 归档时间: |
|
| 查看次数: |
1823 次 |
| 最近记录: |