如何在 Pandas 的数据框中添加计算列,统计某一列中出现的频率?

10

我有这样的数据框:

   county
1     N
2     N
3     C
4     N
5     S
6     N
7     N

我希望达到的目标是:

    county  frequency
1   N       5
2   N       5
3   C       1
4   N       5
5   S       1
6   N       5
7   N       5

是否有可能直接添加这种列而不需要任何中间df。我知道我可以使用group和size函数创建另一个df并合并这两个数据框。但是,我想知道是否有任何函数可以实现这种解决方案,而不需要任何中间df,但可能需要使用'apply'和一些函数或lamba?


1
不太确定您所说的“不需要中间的DataFrame”是什么意思,但似乎您想要使用.transformdf['freq'] = df.groupby('county').county.transform('size') - ALollz
1个回答

15

将value_counts的值映射到列

df['frequency'] = df['county'].map(df['county'].value_counts())

    county  frequency
1   N       5
2   N       5
3   C       1
4   N       5
5   S       1
6   N       5
7   N       5

这个方法可以运行,但是会出现以下警告信息:正在尝试在 DataFrame 的切片副本上设置值。请尝试使用 .loc[row_indexer,col_indexer] = value 来代替。 - Almog Woldenberg
@AlmogWoldenberg,您使用map的列应该是从另一列复制而来,而不是使用loc。如果您展示生成df的代码,我可以帮助解决问题。 - Vaishali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接