【问题标题】:pandas to json with key带键的熊猫到json
【发布时间】:2019-07-22 09:26:09
【问题描述】:

我想创建一个带键的 json 字典。

df = pd.DataFrame({'a':list('ABCAB'),
                   'b':[4,5,4,5,10],
                   'c':[7,8,9,5,10]})

df.set_index('a').to_json(orient='records')
print(d)

这将创建一个如下所示的 json dict:[{"b":4,"c":7},{"b":5,"c":8},{"b":4,"c":9},{"b":5,"c":5},{"b":10,"c":10}]

但是,我正在努力以我想要的方式得到这个,我最好有一个 json 字典,它的键是这样的:["A":[{"b":4,"c":7}, {"b":5,"c":5}],"B": [{"b":5,"c":8},{"b":10,"c":10}], "C": [{"b":4,"c":9}]]

【问题讨论】:

    标签: pandas python-3.6


    【解决方案1】:

    groupbyapply 和lambda 函数一起使用并指定列名,最后调用Series.to_json

    d = df.groupby('a')['b','c'].apply(lambda x: x.to_dict('r')).to_json()
    print(d)
    {"A":[{"b":4,"c":7},{"b":5,"c":5}],
     "B":[{"b":5,"c":8},{"b":10,"c":10}],
     "C":[{"b":4,"c":9}]}
    

    更动态的解决方案是通过Index.difference 获取列名:

    cols = df.columns.difference(['a'])
    d = df.groupby('a')[cols].apply(lambda x: x.to_dict('r')).to_json()
    

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 1970-01-01
      • 2021-05-15
      • 2016-07-03
      • 1970-01-01
      • 2022-07-06
      • 2021-10-28
      • 1970-01-01
      • 2014-08-13
      相关资源
      最近更新 更多