【问题标题】:Pandas to D3. Serializing dataframes to JSON熊猫到 D3。将数据帧序列化为 JSON
【发布时间】:2014-06-25 05:14:07
【问题描述】:

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

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

可以看成如下的层次结构

grouped = df.groupby(['region','type', 'name'])

我想将此层次结构序列化为 JSON 对象。

如果有人感兴趣,其背后的动机是最终将像 this one 这样的可视化放在一起,这需要 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
...

其中regiontypename对应层次结构的不同级别(由ijk索引)

Pandas/Python 中是否有一种简单的方法可以做到这一点?

【问题讨论】:

    标签: python json d3.js pandas


    【解决方案1】:

    类似的东西可能会让你到达那里。

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

    另见this answer

    【讨论】:

      【解决方案2】:

      这是另一个获取 pandas df 并输出flare.json 文件的脚本:https://github.com/andrewheekin/csv2flare.json

      【讨论】:

        猜你喜欢
        • 2012-09-28
        • 1970-01-01
        • 2020-05-12
        • 1970-01-01
        • 2018-07-27
        • 2013-06-03
        • 1970-01-01
        • 1970-01-01
        • 2018-08-25
        相关资源
        最近更新 更多