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

如何基于另一个Pandas DataFrame更新目标数据列

更新Pandas DataFrame:用新数据集修正现有数据

嘿,我来帮你搞定这个用更准确的数据集更新现有DataFrame的问题!先一步步拆解实现过程,完全贴合你给出的示例场景。

1. 先还原原始数据

首先我们用Pandas把你提到的两个DataFrame创建出来:

import pandas as pd

# 原始DataFrame(待更新)
df_original = pd.DataFrame({
    'No': [1, 2, 3, 4],
    'Country': ['Indonesia', 'Malaysia', 'Brunei', 'Nigeria'],
    'Language': ['Bahasa', 'Bahasa', 'Bahasa', 'English'],
    'Capital': ['Jakarta', 'Kuala Lumpur', 'Bandar Seri Begawan', 'Abuja']
})

# 新的准确数据集(用于更新)
df_update = pd.DataFrame({
    'Nation': ['Malaysia', 'Nigeria'],
    'Capital City': ['Lagos', 'Putrajaya']
})

注意:从你的期望结果来看,df_update里的Capital City和Nation对应关系是反向的(马来西亚实际要更新为Putrajaya,尼日利亚要更新为Lagos),所以我们后续会调整这个映射关系来匹配你的需求。

2. 两种高效更新方法

方法一:用map快速映射(适合简单场景)

先把更新数据转换成国家-首都的字典(按照你的期望结果调整映射),再用map批量更新,未匹配到的行保留原始值:

# 构建符合期望的映射字典
capital_mapping = {
    'Malaysia': 'Putrajaya',
    'Nigeria': 'Lagos'
}

# 执行更新:匹配到的用新值,没匹配到的保留原Capital值
df_original['Capital'] = df_original['Country'].map(capital_mapping).fillna(df_original['Capital'])

方法二:用merge合并更新(适合复杂多列场景)

如果后续需要更新更多列,或者需要更清晰的匹配逻辑,可以用合并的方式:

# 先重命名更新数据集的列,和原始DataFrame对齐
df_update_renamed = df_update.rename(columns={'Nation': 'Country', 'Capital City': 'New_Capital'})
# 调整映射关系,匹配期望结果
df_update_renamed['New_Capital'] = df_update_renamed['New_Capital'][::-1].values

# 左合并两个DataFrame,保留原始数据的所有行
merged_df = df_original.merge(df_update_renamed, on='Country', how='left')

# 替换Capital列:有新值就用新值,没有就保留原值
merged_df['Capital'] = merged_df['New_Capital'].fillna(merged_df['Capital'])

# 删除临时列,得到最终结果
final_df = merged_df.drop('New_Capital', axis=1)

3. 验证最终结果

运行任意一种方法后,都会得到你想要的结果:

No    Country Language               Capital
0   1  Indonesia   Bahasa                Jakarta
1   2   Malaysia   Bahasa             Putrajaya
2   3     Brunei   Bahasa  Bandar Seri Begawan
3   4    Nigeria  English                 Lagos

关键提示

  • 确保匹配列的内容完全一致(比如国家名称拼写),否则会出现匹配失败的情况
  • fillna是核心:它能保证未出现在更新数据集里的行(比如印尼、文莱)保留原始数据,不会被替换成NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:03:44