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

如何批量将Pandas列中指定集合的值替换为'Other'

批量替换Pandas DataFrame中匹配另一DataFrame的值为指定内容

需求场景

你有两个Pandas DataFrame:

  • DataFrame1的Values列包含约100个需要替换的目标值,示例如下:
IndexValues
0Celery
1Beetroot
2Pineapple
  • DataFrame2的示例如下:
IndexValues
0Apple
1Carrot
2Pineapple
3Celery
4Beetroot

需要将DataFrame2中所有出现在DataFrame1的Values列的值替换为'Other',最终效果如下:

IndexValues
0Apple
1Carrot
2Other
3Other
4Other

批量替换解决方案

不用逐个写值替换,以下几种方法都能实现批量处理:

方法1:使用isin() + np.where

这是最直观的方式,先标记匹配项再替换:

import pandas as pd
import numpy as np

# 构造示例DataFrame(实际使用时替换成你的真实数据)
df1 = pd.DataFrame({'Values': ['Celery', 'Beetroot', 'Pineapple']})
df2 = pd.DataFrame({'Values': ['Apple', 'Carrot', 'Pineapple', 'Celery', 'Beetroot']})

# 批量替换逻辑
df2['Values'] = np.where(df2['Values'].isin(df1['Values']), 'Other', df2['Values'])

df2['Values'].isin(df1['Values'])会生成布尔数组,标记出df2中哪些值存在于df1里,np.where根据这个标记完成替换。

方法2:直接用replace传入值列表

Pandas的replace方法支持传入值列表,一次性替换所有匹配项:

df2['Values'] = df2['Values'].replace(df1['Values'].tolist(), 'Other')

把df1的Values列转成列表后传给replace,列表里的所有值都会被替换成'Other'。

方法3:使用mask方法

mask方法会将满足条件的元素替换为指定值,写法更简洁:

df2['Values'] = df2['Values'].mask(df2['Values'].isin(df1['Values']), 'Other')

以上三种方法都能高效处理大量待替换值的场景,不用手动逐个指定替换项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 03:05:29