任何人都可以帮助我理解为什么下面的两个调用之间存在不同的行为吗?谢谢。
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
最佳答案
简短的回答 - 你可能只是想要
df.groupby('A').max()
更长的答案 - max
是一个通用的 Python 函数,可以找到任何可迭代的最大值。因为迭代 DataFrame
是在列上,所以调用 python max 只会找到“最大”列,这会发生在第二种情况中。
在第一种情况下 - pandas
具有拦截逻辑,它将诸如 g.apply(sum)
之类的内容转换为 g.sum()
.
关于pandas - Python Pandas groupby-apply 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38875759/