You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于值计数替换列值出错:所有值变为Others的解决求助

问题排查与解决

问题根源

你代码里的核心错误是用了value_counts(normalize=True)——这个参数会返回各国家在列中的占比(数值在0到1之间),而非实际的计数数量。你要判断的是计数小于450,所有国家的占比自然都远小于450,导致所有行都被匹配,最终全部替换成了"Others"。

修正后的代码

删掉normalize=True,直接用value_counts()获取实际计数:

def collapse_category(df):
    # 获取各国家的实际计数,而非占比
    count_map = df['Nationality'].value_counts()
    # 筛选计数小于450的国家,替换为Others
    df.loc[df['Nationality'].map(count_map) < 450, 'Nationality'] = 'Others'
    print(df['Nationality'].unique())
    # 可选:打印替换后的计数分布,验证结果
    print(df['Nationality'].value_counts())

额外说明

  • df['Nationality'].map(count_map)会把每个国家对应到它的计数,再和450比较就能精准筛选出需要替换的行。
  • 替换后可以通过value_counts()检查结果,确认只有计数≥450的国家被保留,其余都合并为"Others"。

内容的提问来源于stack exchange,提问作者Karthik Bhandary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:25:44