groupby的标准方法(如平均值、总和、第一)的列式异常是否可能?

2024-06-08 16:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的第一个问题,希望我做对了

我有一个包含50多列的数据框,我想在上面使用groupby。 除一列之外的所有列都应使用first()进行分组。 其余列应按mean()分组

这是数据帧df的一部分

df = df.iloc[:10,:8]

   id_x first_name country_x  sex  height  weight  score
0     1       Leif       SWE    0     177      73     100.0             
1     1       Leif       SWE    0     177      73     112.0             
2     1       Leif       SWE    0     177      73     98.0             
3     1       Leif       SWE    0     177      73     73.5             
4     1       Leif       SWE    0     177      73     50.0             
5     3     Magnus       SWE    0     180      78     45.5             
6     3     Magnus       SWE    0     180      78     72.0             
7     3     Magnus       SWE    0     180      78     83.5             
8     3     Magnus       SWE    0     180      78     95.0             
9     3     Magnus       SWE    0     180      78     115.0   

据我所知,我可以通过使用 df.groupby('id_x').agg() 为每一列使用一个具有所需方法的字典,但这将是一个相当长的字典

那么,有没有一种方法可以对一列(或n列)分组并使用标准方法和异常


Tags: 数据方法nameiddf字典meancountry
1条回答
网友
1楼 · 发布于 2024-06-08 16:19:27

这本词典可能很长,但你可以通过听写理解简洁地创建它。对所有内容使用first,而不是分组列或特殊列,然后使用'mean'添加特殊列

d = {x: 'first' for x in df.columns.difference(['id_x', 'score'])}
d['score'] = 'mean'

df.groupby('id_x').agg(d)
#     country_x first_name  height  sex  weight  score
#id_x                                                 
#1          SWE       Leif     177    0      73   86.7
#3          SWE     Magnus     180    0      78   82.2

相关问题 更多 >