我有一个数据框(df):
A B C D E F
A1 B1 c 10 E1 F1
A2 B2 c 50 E2 F2
A3 B3 c 20 E2 F3
A4 B4 c 30 E1 F4
A5 B5 c 40 E3 F5
输出应该像;
df:
A B C D E F count sum
A1 B1 c 10 E1 F1 2 40
A2 B2 c 50 E2 F2 2 70
A3 B3 c 20 E2 F3 2 70
A4 B4 c 30 E1 F4 2 40
A5 B5 c 40 E3 F5 1 40
基于E列进行计数和求和。
我尝试过:
df.groupby('E').agg(['count','sum'])
我只得到count和sum列,而没有得到df
的其他列。
请提出解决方案。
答案 0 :(得分:2)
像这样尝试:
df['count'] = df.groupby('E')['E'].transform('count')
df['sum'] = df.groupby('E')['D'].transform('sum')
输出:
A B C D E F count sum
0 A1 B1 c 10 E1 F1 2 40
1 A2 B2 c 50 E2 F2 2 70
2 A3 B3 c 20 E2 F3 2 70
3 A4 B4 c 30 E1 F4 2 40
4 A5 B5 c 40 E3 F5 1 40
答案 1 :(得分:1)
我无法理解您的数据,但是您想要做的是:
df.groupby('E').agg({'column1': 'count', 'column2': 'sum'})