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

如何在Pandas DataFrame中通过同表查找创建op_team_pace列?

如何通过对手比赛代码匹配Pandas DataFrame中的对手节奏值

你可以通过两种简单方法实现需求:利用字典映射或DataFrame合并,以下是具体步骤:

先构造示例数据(方便测试)

import pandas as pd

data = {
    'team': ['ABC', 'ABC', 'KLM', 'KLM', 'XYZ', 'XYZ'],
    'game_code': ['ABC_01-01-2010', 'ABC_02-12-2010', 'KLM_02-12-2010', 'KLM_03-11-2010', 'XYZ_01-01-2010', 'XYZ_03-11-2010'],
    'opponent': ['XYZ', 'KLM', 'ABC', 'XYZ', 'ABC', 'KLM'],
    'team_pace': [50, 48, 65, 62, 47, 63],
    'op_game_code': ['XYZ_01-01-2010', 'KLM_02-12-2010', 'ABC_02-12-2010', 'XYZ_03-11-2010', 'ABC_01-01-2010', 'KLM_03-11-2010']
}

df = pd.DataFrame(data)

方法1:字典映射(高效简洁)

因为game_code是唯一标识,先创建game_code到team_pace的映射字典,再用op_game_code匹配取值:

# 构建比赛代码到节奏值的映射
pace_mapping = df.set_index('game_code')['team_pace'].to_dict()

# 生成对手节奏值列
df['op_team_pace'] = df['op_game_code'].map(pace_mapping)

方法2:DataFrame合并(直观清晰)

将原DataFrame与自身合并,通过op_game_code和game_code匹配,提取对手的节奏值:

# 重命名列后合并,匹配对手数据
df = df.merge(
    df[['game_code', 'team_pace']].rename(columns={'game_code': 'op_game_code', 'team_pace': 'op_team_pace'}),
    on='op_game_code',
    how='left'
)

处理后结果

两种方法都会得到符合预期的DataFrame:

teamgame_codeopponentteam_paceop_game_codeop_team_pace
ABCABC_01-01-2010XYZ50XYZ_01-01-201047
ABCABC_02-12-2010KLM48KLM_02-12-201065
KLMKLM_02-12-2010ABC65ABC_02-12-201048
KLMKLM_03-11-2010XYZ62XYZ_03-11-201063
XYZXYZ_01-01-2010ABC47ABC_01-01-201050
XYZXYZ_03-11-2010KLM63KLM_03-11-201062

方法选择

  • 字典映射:性能更优,适合处理大规模数据集
  • 合并方法:逻辑更直观,若后续需要提取对手更多字段,扩展性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:30:29