根据pandas数据框中特定列与其他列的计数和总和分组

时间:2018-07-12 04:30:51

标签: python pandas dataframe

我有一个数据框(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的其他列。 请提出解决方案。

2 个答案:

答案 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'})