将DataFrame转储到JSON记录

时间:2017-12-26 11:44:43

标签: python json pandas dataframe

我的数据框df为:

   task_count  task   date
0  82586       foo     2015-10-31
1  57417       foo     2016-08-31
2  47800       bar     2016-12-31
3  62331       foo     2016-02-29
4  45852       bar     2017-07-31

我想生成一个输出:

[
  {
    "task": "foo",
    "task_count": [82586,57417,62331],
    "date": ["2015-10-31","2016-08-31","2016-02-29"]
  },
  {
    "task": "bar",
    "task_count": [47800,45852],
    "date": ["2016-12-31","2017-07-31"]
  }
]

到目前为止,这是我所做的,但我无法在多列上执行groupby。

result = df.groupby('task')['task_count'].apply(list).reset_index().to_json(orient='records')
print(json.dumps(json.loads(result),indent=2)

实现所需输出的方法应该是什么?

1 个答案:

答案 0 :(得分:4)

您可以使用<input id="txtCardNumber"/> + groupby + agg -

to_dict

如果要生成JSON并将结果转储到文件,请使用df.groupby('task', as_index=False).agg(lambda x: x.tolist()).to_dict('r') [ { "date": [ "2016-12-31", "2017-07-31" ], "task_count": [ 47800, 45852 ], "task": "bar" }, { "date": [ "2015-10-31", "2016-08-31", "2016-02-29" ], "task_count": [ 82586, 57417, 62331 ], "task": "foo" } ] 代替to_json -

to_dict

创建一个包含 - {/ p>的df.groupby('task', as_index=False)\ .agg(lambda x: x.tolist())\ .to_json('file.json', orient='records')

file.json