Python groupby的标准方法(如平均值、总和、第一)的列异常是否可能?
这是我的第一个问题,希望我做对了 我有一个包含50多列的数据框,我想在上面使用groupby。 除一列之外的所有列都应使用Python groupby的标准方法(如平均值、总和、第一)的列异常是否可能?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,这是我的第一个问题,希望我做对了 我有一个包含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
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列)进行分组并使用标准方法和例外情况呢?词典可能很长,但您可以通过dict理解简洁地创建词典。首先对所有内容使用
,而不是分组列或特殊列,然后用的“平均值”添加特殊列。
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
这本词典可能很长,但你可以通过听写理解简洁地创建它。首先对所有内容使用,而不是分组列或特殊列,然后用的“平均值”添加特殊列。
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
非常感谢您的快速回复和解决问题!不幸的是,由于声誉不好,我无法提高投票率。不用担心,这是一个明确的问题,所以我很乐意帮忙!快乐编码:谢谢您的快速回复和解决问题!不幸的是,由于声誉不好,我无法提高投票率。不用担心,这是一个明确的问题,所以我很乐意帮忙!快乐编码:D