我的数据框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)
实现所需输出的方法应该是什么?
答案 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