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

基于DataFrame匹配值及索引关联更新字段值的实现问题

问题解决:DataFrame匹配替换值

首先修正你提供的DataFrame语法错误(df_team中'Con Team'缺少闭合引号):

import pandas as pd
import numpy as np

df_team = pd.DataFrame({
    'Team': ["Cal", "Bos", "Flo", "NY", "KC"],
    'Con Team': ["California", "Boston", "Florida", "New York", "Kansas City"]
})

df_sched = pd.DataFrame({
    'Team': ["Bos", "NY", "KC"]
})

你之前代码的问题

  1. df_sched不存在'Con Team'列,直接引用会触发KeyError
  2. np.where + isin仅能判断值是否存在,无法建立df_sched['Team']与df_team['Con Team']的映射关系,所以无法完成替换

正确实现方法

方法1:使用map(最简洁)

先将df_team转换为键值对字典,再用map完成匹配替换:

# 生成Team到Con Team的映射字典
team_to_con = df_team.set_index('Team')['Con Team'].to_dict()

# 替换df_sched的Team列
df_sched['Team'] = df_sched['Team'].map(team_to_con)

# 输出结果
print(df_sched)
#          Team
# 0      Boston
# 1    New York
# 2  Kansas City

如果需要保留未匹配的原始值(比如假设df_sched有不在df_team里的Team),可以用fillna:

df_sched['Team'] = df_sched['Team'].map(team_to_con).fillna(df_sched['Team'])

方法2:使用replace

和map逻辑类似,直接传入映射字典即可:

df_sched['Team'] = df_sched['Team'].replace(team_to_con)

方法3:使用merge(适合复杂关联场景)

如果需要保留更多关联数据,或者处理多列匹配,用merge更灵活:

# 左连接两个DataFrame,保留df_sched的所有行
merged = df_sched.merge(df_team, on='Team', how='left')

# 将Con Team的值替换到原Team列,未匹配的保留原Team值
df_sched['Team'] = merged['Con Team'].fillna(merged['Team'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:27:22