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

按条目组合出现次数阈值修改pandas DataFrame的字段值

实现步骤

你可以通过groupby+transform的方式高效实现需求,无需额外的表关联操作,具体代码如下:

步骤1:计算组合出现频次

用transform把每个Age+University组合的出现次数映射到原表的每一行,生成临时计数列:

import pandas as pd

# 测试数据集
details = {
    'Name' : ['Sharon', 'Aisha', 'Shaurya', 'Shahul', 'Rhonda', 'Latifa', 'Raja', 'Mia'],
    'Age' : [23, 21, 22, 21, 30, 21, 21, 23],
    'University' : ['WU', 'JNU', 'DBU', 'BHU', 'JNU', 'WU', 'JNU', 'WU'],
}
df = pd.DataFrame(details)

# 生成组合计数列
df['comb_count'] = df.groupby(['Age', 'University'])['Name'].transform('count')

步骤2:替换低频组合的University值

筛选出计数小于2的行,将对应University字段替换为Other,不需要保留计数列可以直接删除:

# 替换低频值
df.loc[df['comb_count'] < 2, 'University'] = 'Other'
# 删除临时计数列
df = df.drop('comb_count', axis=1)

最终输出结果

处理后的数据如下:

Name  Age University
0   Sharon   23         WU
1    Aisha   21        JNU
2  Shaurya   22      Other
3   Shahul   21      Other
4   Rhonda   30      Other
5   Latifa   21      Other
6     Raja   21        JNU
7      Mia   23         WU
替代方案(小数据量可用)

如果不想新增临时列,也可以用apply逐行判断,不过数据量超过1万行时效率远低于上面的方案:

comb_counts = df.groupby(['Age', 'University']).size()
df['University'] = df.apply(
    lambda x: 'Other' if comb_counts.loc[(x['Age'], x['University'])] < 2 else x['University'],
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:24:04