执行df['A'].value_counts()后如何将计数<2的项替换为Others
具体实现方法
你可以选择两种常用路径实现需求,按需选择即可:
方法1:直接处理value_counts()的统计结果,不修改原数据
import pandas as pd # 第一步:先拿到原始频次统计结果 counts = df['A'].value_counts() # 第二步:筛选出频次≥2的条目保留,剩余低频值求和作为Others keep_counts = counts[counts >= 2] others_total = counts[counts < 2].sum() # 第三步:把Others条目添加到最终结果中 keep_counts['Others'] = others_total # 如果需要直接输出类似"Others = 8"的格式,加一行即可 print(f"Others = {keep_counts['Others']}")
方法2:先替换原列的低频值,再重新统计频次
如果后续还要用到替换后的列数据,可以选这个方法:
counts = df['A'].value_counts() # 拿到所有频次<2的取值列表 low_freq_values = counts[counts < 2].index # 把原A列中所有低频取值统一替换为Others df['A'] = df['A'].replace(low_freq_values, 'Others') # 重新统计就能直接得到带Others的频次结果 final_counts = df['A'].value_counts()
示例效果:假设原A列取值为
['x','x','y','z','m','n'],原统计结果为x出现2次、y/z/m/n各出现1次,处理后最终结果为:
x 2
Others 4
内容的提问来源于stack exchange,提问作者Bruno93600
相关产品推荐
相关产品推荐

