pandas - Python Pandas groupby-apply 奇怪的行为

标签 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

最佳答案

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

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/

相关文章:

python - 在 Pandas 中对元素进行分组时添加默认值

python - Pandas 函数 pandas.read_sql_table() 返回一个 DataFrame,其中值的顺序错误

python - 将 pd 数据框填写到现有的 excel 表中(使用 openpyxl v2.3.2)

python模块 'pandas'没有属性 'plotting'

python - Pandas Dataframe 中的灵活选择

python - Pandas DataFrame dtype 是 Int64 返回 Float64

python Pandas 。如何将特定行的提取结果更新到原特定行的其他列?

python - 来自 unix utc 秒的 numpy datetime64

python - 如何在 Pandas 中插入纬度/经度和航向

python - 找出对象列是否在 Pandas 中具有多种数据类型的最快和/或最惯用的方法是什么?