如何仅在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
相关产品推荐
相关产品推荐

