gpt4 book ai didi

python - Pandas:Groupby 数据框并创建缺少数据的字典

转载 作者:行者123 更新时间:2023-12-04 15:02:41 26 4
gpt4 key购买 nike

下面是我的df:

   In [78]: df
Out[78]:
site date race count
0 1 1999-01-31 Asian 100
1 1 1999-01-31 African 25
2 2 1999-01-31 Asian 200
3 1 2001-01-21 Asian 95
4 2 2001-01-21 Asian 130
5 1 2003-01-12 Asian 80
6 2 2003-01-12 Mexican 35

我想在 racedate 上对上面的内容进行分组,并创建如下所示的输出:

预期:

{
"dates":[
"1999-01-31",
"2001-01-21",
"2003-01-12"
]
},
{
"race": "Asian"
"data": [
300,
225,
80
]
},
{
"race": "African"
"data": [
25,
0,
0
]
},
{
"race": "Mexican"
"data": [
0,
0,
35
]
}

我的尝试:

In [77]: df.groupby(['race', 'date'])['count'].sum().reset_index(level=1)
Out[77]:
date count
race
African 1999-01-31 25
Asian 1999-01-31 300
Asian 2001-01-21 225
Asian 2003-01-12 80
Mexican 2003-01-12 35

我可以通过 groupby 获得上述结果,但不确定如何创建我预期的输出。

最佳答案

此处处理的 date 与其他值不同,因此首先使用 DataFrame.pivot_table 进行旋转然后使用自定义格式列出理解:

df = df.pivot_table(index='date',columns='race',values='count',fill_value=0, aggfunc='sum')

L = [{"dates": list(df.index)}] + [dict(race=k, data=list(v)) for k, v in df.items()]
print (L)
[{'dates': ['1999-01-31', '2001-01-21', '2003-01-12']},
{'race': 'African', 'data': [25, 0, 0]},
{'race': 'Asian', 'data': [300, 225, 80]},
{'race': 'Mexican', 'data': [0, 0, 35]}]

关于python - Pandas:Groupby 数据框并创建缺少数据的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66688299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com