我对 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
时可以这样做。
答案 0 :(得分:0)
如果你做data.groupby('source').agg(lambda x: print(type(x))
,你会注意到它们是'pandas.core.series.Series'
,当使用agg
时,它会处理单个系列