如何在Pandas中实现类似COUNTIF功能(保留重复值,不使用value_counts)
解决方案
你可以用Pandas的groupby结合transform方法实现需求,这个方法不会改变原数据的行数,也不需要额外分组操作,直接把每个值的总出现次数映射到对应行:
- 先构造示例数据(如果已有现成DataFrame可跳过这步):
import pandas as pd data = {'COL 1': ['VALUE1', 'VALUE2', 'VALUE1', 'VALUE1', 'VALUE1', 'VALUE3', 'VALUE2', 'VALUE1', 'VALUE3', 'VALUE2']} df = pd.DataFrame(data)
- 生成目标列:
df['Desired Result'] = df.groupby('COL 1')['COL 1'].transform('count')
运行后输出的DataFrame就是你要的结果:
COL 1 Desired Result 0 VALUE1 5 1 VALUE2 3 2 VALUE1 5 3 VALUE1 5 4 VALUE1 5 5 VALUE3 1 6 VALUE2 3 7 VALUE1 5 8 VALUE3 1 9 VALUE2 3
原理很直白:groupby('COL 1')按列值分组,transform('count')计算每个分组的元素数量,同时把这个数量填充回原DataFrame的对应行,完全匹配你的需求,全程不需要分组聚合后再合并。
内容的提问来源于stack exchange,提问作者Θοδωρής Πάλλης
相关产品推荐
相关产品推荐

