我认为你可以使用 aggregate
函数,其中包含双重的 sum
和 len
,使用 rename
函数对列进行重命名,并最后通过 reindex_axis
函数改变列的顺序:
print (dfn.groupby('A')
.agg({'B': sum, 'C':sum, 'A':len})
.rename(columns={'A': 'Count', 'B': 'Sum_B', 'C': 'Sum_C'})
.reindex_axis(['Sum_B','Sum_C','Count'], axis=1))
Sum_B Sum_C Count
A
aaa 3 5 2
bbb 40 20 2
如果需要使用
reset_index
函数:
print (dfn.groupby('A')
.agg({'B': sum, 'C':sum, 'A':len})
.rename(columns={'A': 'Count', 'B': 'Sum_B', 'C': 'Sum_C'})
.reindex_axis(['Sum_B','Sum_C','Count'], axis=1)
.reset_index())
A Sum_B Sum_C Count
0 aaa 3 5 2
1 bbb 40 20 2
您可以使用 size
代替 len
,它们的含义相同:
print (dfn.groupby('A')
.agg({'B': sum, 'C':sum, 'A':'size'})
.rename(columns={'A': 'Count', 'B': 'Sum_B', 'C': 'Sum_C'})
.reindex_axis(['Sum_B','Sum_C','Count'], axis=1)
.reset_index())
A Sum_B Sum_C Count
0 aaa 3 5 2
1 bbb 40 20 2
size
和count
之间的区别(详见数值差异):
bbb
和Sum_B
应该是40而不是50,对吗? - evan54