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

如何在Pandas DataFrame中将印度、美国以外的国家替换为Other?

解决Pandas替换指定外类别为Other的问题

针对你需要将Q0_0列中除India和U.S.A外的所有国家替换为Other的需求,以下是几种可行的方法:

方法1:使用np.where(最直观易用)

通过条件判断直接替换,逻辑清晰,适合大多数场景:

import pandas as pd
import numpy as np

# 你的原始DataFrame
df = pd.DataFrame({
    'Q0_0': ["India", "Algeria", "India", "U.S.A", "Morocco", "Tunisia", "U.S.A", "France", "Russia", "Algeria"],
    'Q1_1': [np.random.randint(1,100) for i in range(10)],
    'Q1_2': np.random.random(10),
    'Q1_3': np.random.randint(2, size=10),
    'Q2_1': [np.random.randint(1,100) for i in range(10)],
    'Q2_2': np.random.random(10),
    'Q2_3': np.random.randint(2, size=10)
})

# 定义需要保留的国家列表
target_countries = ["India", "U.S.A"]
# 执行替换:如果列值在目标列表里则保留原内容,否则替换为Other
df['Q0_0'] = np.where(df['Q0_0'].isin(target_countries), df['Q0_0'], 'Other')

方法2:使用Series.mask

和np.where逻辑类似,是Pandas Series自带的条件替换方法:

df['Q0_0'] = df['Q0_0'].mask(~df['Q0_0'].isin(target_countries), 'Other')

这里的~表示取反,即当列值不在目标列表中时,替换为Other。

方法3:用str.replace结合正则表达式(如果你一定要用这个方法)

之前直接用str.replace失败,是因为它默认替换的是包含指定子串的内容,而你需要的是精确匹配整个字符串并排除指定值。可以通过正则的负向前瞻实现:

# 构造正则:匹配既不是India也不是U.S.A的完整字符串
pattern = r'^(?!India$|U\.S\.A$).*'
df['Q0_0'] = df['Q0_0'].str.replace(pattern, 'Other', regex=True)

注意正则里的.需要转义成\.,因为.在正则中代表任意字符,^和$确保匹配整个字符串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:30:58