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

如何基于另一DataFrame的列值更新当前DataFrame的指定列

错误原因
  • 原始代码直接取全量origin_details的Country列参与计算,该列共6行数据,但employee_details只有4行,二者长度不匹配因此抛出ValueError
  • 没有基于Personal_ID做关联匹配,就算两个表行数一致,也会出现ID对应错误的问题
可行解决方案

用map做ID到Country的映射,不会修改两个原始DataFrame的任何数据,完全保留origin_details的全量内容供后续使用:

import pandas as pd
import numpy as np

employee = {
        'Personal_ID': ['1000123', '1100258', '1104682', '1020943'],
        'Name': ['Tom', 'Joseph', 'Krish', 'John'],
        'Age': ['40', '35', '43', '51'],
        'Eligible': ' '}

origin = {
        'Personal_ID': ['1000123', '1100258', '1104682', '1020943', '1573482', '1739526'],
        'Country': ['UK', 'USA', 'FRA', 'SWE', 'UK', 'AU']}


employee_details = pd.DataFrame(employee)
origin_details = pd.DataFrame(origin)

# 构建Personal_ID到Country的映射字典,不会修改origin_details原有数据
id_to_country = origin_details.set_index('Personal_ID')['Country'].to_dict()
# 匹配employee对应的Country后判断是否符合条件
employee_details['Eligible'] = np.where(employee_details['Personal_ID'].map(id_to_country) == 'UK', 'Yes', 'No')

print(employee_details)
输出结果
Personal_ID    Name Age Eligible
0     1000123     Tom  40      Yes
1     1100258  Joseph  35       No
2     1104682   Krish  43       No
3     1020943    John  51       No

如果后续需要处理employee_details中存在但origin_details中不存在的ID,在np.where里增加缺失值的兜底逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:36:03