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

如何在Pandas中用另一DataFrame的列替换目标列的值

解决方案

可以用Pandas的map()方法或者合并(merge)的方式实现这个替换需求,以下是具体步骤:

明确两个DataFrame的结构:

df1(代码-国家映射表):

codecountries
FR法国
US美国
IT意大利

df2(待替换的数据集):

countries
FR
FR
IT
US
US
US
IT

方法一:使用map()函数(推荐,简洁高效)

先把df1转换成代码到国家名的字典,再用这个字典对df2的countries列做映射替换:

import pandas as pd

# 构造示例数据
df1 = pd.DataFrame({'code': ['FR', 'US', 'IT'], 'countries': ['法国', '美国', '意大利']})
df2 = pd.DataFrame({'countries': ['FR', 'FR', 'IT', 'US', 'US', 'US', 'IT']})

# 生成映射字典
country_map = df1.set_index('code')['countries'].to_dict()

# 替换df2的countries列
df2['countries'] = df2['countries'].map(country_map)

print(df2)

执行后df2的结果:

countries
法国
法国
意大利
美国
美国
美国
意大利

方法二:使用merge()合并后替换

如果需要保留原列或处理复杂匹配场景,可用合并方式:

# 合并df2和df1,以df2的countries(即code)匹配df1的code
merged_df = df2.merge(df1, left_on='countries', right_on='code', how='left')

# 用匹配到的国家名替换原列
df2['countries'] = merged_df['countries_y']

# 若需保留原始code,可新增中文国家列:
# df2['country_name'] = merged_df['countries_y']

print(df2)

这种方法适合需要保留原始code,或处理df2中存在df1未收录代码的场景——通过how='left'确保所有df2的行都被保留,匹配不到的会显示NaN。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:32:24