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

使用Python pandas参照另一张表映射关系替换DataFrame指定字段值

实现DataFrame列值按映射替换的两种方法

方法1:使用replace方法(你需求中提到的实现方式)

你只需要先将df2的主机名-用户名映射转换为字典,再传入replace方法即可,示例代码如下:

# 假设df2的主机名列名为host,对应用户名列名为user,先构造映射字典
map_dict = df2.set_index('host')['user'].to_dict()
# 执行df1的B列替换
df1['B'] = df1['B'].replace(map_dict)

如果B列存在没有在映射关系里的主机名,原值会自动保留不会被修改。

方法2:使用map方法(数据量较大时更推荐)

如果你的数据量级较高,map方法的执行效率会优于replace,实现逻辑如下:

df1['B'] = df1['B'].map(map_dict)

注意:map方法在遇到无匹配的主机名时会返回NaN,如果你需要保留未匹配的原值,可以补充fillna逻辑:

df1['B'] = df1['B'].map(map_dict).fillna(df1['B'])

可直接运行的验证示例

你可以用以下示例代码测试效果:

import pandas as pd

# 构造示例df1
df1 = pd.DataFrame({
    "序号": [1,2,3,4],
    "B": ["host-1", "host-2", "host-3", "host-4"]
})

# 构造映射表df2
df2 = pd.DataFrame({
    "host": ["host-1", "host-2", "host-3"],
    "user": ["张小明", "李小红", "王大锤"]
})

# 生成映射字典
map_dict = df2.set_index("host")["user"].to_dict()

# 执行替换
df1["B"] = df1["B"].replace(map_dict)
print(df1)

运行后输出的df1的B列会变为["张小明", "李小红", "王大锤", "host-4"],未匹配的host-4保留原值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:36:00