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

如何用Pandas逐行将DataFrame某列子串替换为另一列对应值?

解决方案

可以利用Pandas的apply方法结合字典的get方法实现需求,无需手动逐行遍历,代码简洁且符合Pandas原生用法:

import pandas as pd

# 构造示例DataFrame
data = {
    'A': [
        'Ireland France Germany Poland',
        'Ireland Iceland Singapore Portugal',
        'Spain Italy Denmark'
    ],
    'B': [
        {'Ireland': 'Dublin', 'Germany': 'Berlin'},
        {'Ireland': 'Dublin', 'France': 'Paris', 'Norway': 'Olso', 'Portugal': 'Lisbon'},
        {'Italy': 'Rome', 'Finland': 'Helsinki'}
    ]
}
df = pd.DataFrame(data)

# 执行替换操作
df['A'] = df.apply(
    lambda row: ' '.join([row['B'].get(word, word) for word in row['A'].split()]),
    axis=1
)

print(df)

代码说明:

  • apply(..., axis=1):指定按行处理数据,让每一行的A和B列能关联起来
  • row['A'].split():将A列的文本拆分为单个单词
  • row['B'].get(word, word):检查当前单词是否存在于该行B列的字典中,存在则替换为对应值,不存在则保留原单词
  • ' '.join(...):将处理后的单词重新拼接为完整文本

为什么之前的方法不生效:

  • df['A'].replace(df['B']):这个写法是尝试用整个B列的字典做全局替换,而非每行对应自己的字典,所以无法匹配行级别的替换规则
  • str.replace:默认仅支持全局固定文本或正则替换,无法直接关联每行的B列字典作为替换规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 03:32:42