繁体   English   中英

如何将不同的函数应用于pandas数据帧上的不同列

[英]How to apply different functions to different columns on pandas dataframe

我想在pandas数据帧上使用groupby,但我希望得到一些列的平均值和其他列的总和。 假设我们有以下数据帧:

ID   A    B    C
1    1    1    0
1    2    3    1
1    3    6    1
4    3    2    1
4    4    1    0
6    5    1    0
6    6    6    1
6    7    2    0

我想分组ID并获得列“A”的平均值和其他列的总和(实际上我有超过40列)。

我希望结果看起来像这样:

ID   A    B    C
1    2    10   2
4    3.5  3    1
6    6    9    1

提前致谢。

你可以这样做:

数据:

In [127]: df = pd.DataFrame(np.random.randint(0,10, (7,6)), columns=list('ABCDEF'))
     ...: df['ID'] = np.random.choice([1,2], len(df))
     ...:

In [128]: df
Out[128]:
   A  B  C  D  E  F  ID
0  7  7  2  2  3  0   1
1  8  4  1  3  6  8   1
2  4  7  7  2  8  4   2
3  5  9  3  6  6  1   1
4  4  6  1  7  4  6   2
5  4  5  3  8  7  6   2
6  8  4  1  8  1  0   1

解:

In [129]: fnc = {c:'sum' for c in df.columns.drop(['ID','A'])}
     ...: fnc['A'] = 'mean'
     ...:

In [130]: fnc
Out[130]: {'A': 'mean', 'B': 'sum', 'C': 'sum', 'D': 'sum', 'E': 'sum', 'F': 'sum'}

In [131]: df.groupby('ID').agg(fnc).reindex_axis(df.columns.drop('ID'), 1)
Out[131]:
    A   B   C   D   E   F
ID
1   7  24   7  19  16   9
2   4  18  11  17  19  16

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM