Python Pandas groupby-应用奇怪的行为

时间:2016-08-10 14:07:31

标签: pandas

任何人都可以帮助我理解为什么下面两个电话之间有不同的行为?谢谢。

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

1 个答案:

答案 0 :(得分:3)

简短的回答 - 你可能只想要

df.groupby('A').max()

更长的答案 - max是一个通用的python函数,可以找到任何可迭代的最大值。因为迭代DataFrame在列上,所以调用python max只会找到"最大的"列,在第二种情况下发生。

在第一种情况下,pandas具有拦截逻辑,将g.apply(sum)转换为g.sum()