熊猫应用聚合差异

时间:2021-07-21 14:52:25

标签: python pandas

我对 pandas 聚合和应用的差异感到困惑。据我所知,我认为这个问题不是其他问题的答案。
以下四个都有效。 (test 是一个值等于 0 或 1 的分类变量)

data.groupby('source').apply(lambda x: len(x['test'][data['test']==0]))
data.groupby('source').apply(lambda x: len(x['test'][x['test']==0]))
data.groupby('source')['test'].apply(lambda x: len(x[x==0]))
data.groupby('source')['test'].agg(lambda x: len(x[x==0]))

结果是

source
Ads       95245
Direct    47691
SEO       94157
Name: test, dtype: int64

但这会给我一个KeyError: 'test'

data.groupby('source').agg(lambda x: len(x['test'][x['test']==0]))

为什么我在使用 ['test'] 时不能将 x 放在 agg 之后,而在使用 apply 时可以这样做。

1 个答案:

答案 0 :(得分:0)

如果你做data.groupby('source').agg(lambda x: print(type(x)),你会注意到它们是'pandas.core.series.Series',当使用agg时,它会处理单个系列