任何人都可以帮助我理解为什么下面两个电话之间有不同的行为?谢谢。
In [34]: df
Out[34]:
A B C
0 1 0 0
1 1 7 4
2 2 9 8
3 2 2 4
4 2 2 1
5 3 3 3
6 3 3 2
7 3 5 7
In [35]: g = df.groupby('A')
In [36]: g.apply(max)
Out[36]:
A B C
A
1 1 7 4
2 2 9 8
3 3 5 7
In [37]: g.apply(lambda x: max(x))
Out[37]:
A
1 C
2 C
3 C
dtype: object
答案 0 :(得分:3)
简短的回答 - 你可能只想要
df.groupby('A').max()
更长的答案 - max
是一个通用的python函数,可以找到任何可迭代的最大值。因为迭代DataFrame
在列上,所以调用python max只会找到"最大的"列,在第二种情况下发生。
在第一种情况下,pandas
具有拦截逻辑,将g.apply(sum)
转换为g.sum()
。