gpt4 book ai didi

python - 使用 Pandas 聚合基于其他列的结果

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:56 25 4
gpt4 key购买 nike

我正在 pandas agg 中寻找一种基于其他列值查找列值的方法。

例如:我有以下数据框

df = pd.DataFrame({"Project":['A','B','C','D','E'],
"Country" :['Brazil','Brazil','Germany','Germany','Argentina'],\
"Value":[12,11,14,15,18]})

Country Project Value
0 Brazil A 12
1 Brazil B 11
2 Germany C 14
3 Germany D 15
4 Argentina E 18

我创建了这个聚合:

aggregations = {'Project':{'Number of projects':'count'},
'Value':{'Mean':'mean',
'Max':'max',
'Min':'min'}}

df.groupby(['Country']).agg(aggregations)

我想在此聚合中添加一个新列,作为结果给出项目的名称,最多观察到“值(value)”。预期结果如下:

                 Project Value        
Number of Projects Mean Max Min Projec_Max Projec_Min
Country
Argentina 1 18.0 18 18 E E
Brazil 2 11.5 12 11 A B
Germany 2 14.5 15 14 D C

如何在聚合字典中实现它?

提前致谢

最佳答案

不确定这是否是最好的方法,但它似乎有效:

aggregations = {'Project':{'Number of projects':'count'},
'Value':{'Mean':'mean',
'Max':'max',
'Min':'min',
'Project_Max': lambda x: df['Project'][x.idxmax()],
'Project_Min': lambda x: df['Project'][x.idxmin()]}}
df.groupby(['Country']).agg(aggregations)

结果:

                Value                                      Project
Project_Max Project_Min Max Mean Min Number of projects
Country
Argentina E E 18 18.0 18 1
Brazil A B 12 11.5 11 2
Germany D C 15 14.5 14 2

关于python - 使用 Pandas 聚合基于其他列的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185787/

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