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

如何仅在DataFrame指定列中用列名替换指定字符串?

Pandas 指定列替换"Yes"为列名的解决方案

下面是几种针对DataFrame指定列将字符串"Yes"替换为对应列名的实用方法,仅作用于你指定的列,不会影响其他列:

方法1:使用applymap批量处理指定列

通过applymap遍历指定列的每个元素,判断并替换:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'col1': ['Yes', 'No', 'Yes'],
    'col2': ['No', 'Yes', 'Yes'],
    'col3': ['Yes', 'No', 'No']
})

# 定义需要处理的目标列
target_cols = ['col1', 'col2']

# 对目标列执行替换:将"Yes"替换为列名,其他值保持不变
df[target_cols] = df[target_cols].applymap(lambda x: x.name if x == 'Yes' else x)

方法2:使用replace结合列级替换规则

为每个目标列构造专属的替换字典,精准控制替换范围:

import pandas as pd

# 示例DataFrame同上,省略重复代码
target_cols = ['col1', 'col2']

# 生成替换规则:键为列名,值为该列的替换映射
replace_rules = {col: {'Yes': col} for col in target_cols}

# 执行替换操作
df = df.replace(replace_rules)

方法3:使用numpy.where逐列处理

逻辑直观,适合逐个列精细控制:

import pandas as pd
import numpy as np

# 示例DataFrame同上,省略重复代码
target_cols = ['col1', 'col2']

for col in target_cols:
    df[col] = np.where(df[col] == 'Yes', col, df[col])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:04:55