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

如何在Pandas中按条件将另一DataFrame的值映射为新列

为DataFrame主客场球队添加对应评级列

可以通过**映射(map)或合并(merge)**两种方式实现需求,以下是具体代码:

方法一:使用map快速映射(推荐)

先将ratings转换为以球队名为索引的Series,再直接映射到fixtures的主客场列:

import pandas as pd

# 原始数据
fixtures = pd.DataFrame(
    {'HomeTeam': ["A", "B", "C", "D"], 'AwayTeam': ["E", "F", "G", "H"]})

ratings = pd.DataFrame({'team': ["A", "B", "C", "D", "E", "F", "G", "H"], "rating": [
                       "1,5", "0,2", "0,5", "2", "3", "4,8", "0,9", "-0,4"]})

# 创建球队-评级的映射Series
rating_map = ratings.set_index('team')['rating']

# 添加主客场评级列
fixtures['HomeTeamRating'] = fixtures['HomeTeam'].map(rating_map)
fixtures['AwayTeamRating'] = fixtures['AwayTeam'].map(rating_map)

# 查看结果
print(fixtures)

输出结果:

HomeTeam AwayTeam HomeTeamRating AwayTeamRating
0        A        E            1,5              3
1        B        F            0,2            4,8
2        C        G            0,5            0,9
3        D        H              2           -0,4

方法二:使用merge合并数据

通过两次合并分别关联主客场的评级:

# 合并主队评级
fixtures = fixtures.merge(
    ratings.rename(columns={'team':'HomeTeam', 'rating':'HomeTeamRating'}),
    on='HomeTeam'
)
# 合并客队评级
fixtures = fixtures.merge(
    ratings.rename(columns={'team':'AwayTeam', 'rating':'AwayTeamRating'}),
    on='AwayTeam'
)

可选:将评级转换为数值类型

如果需要后续计算,可先将字符串格式的评级转换为浮点型:

ratings['rating'] = ratings['rating'].str.replace(',', '.').astype(float)

再执行上述映射/合并操作,得到的评级列会是数值类型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:40:58