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

Python Pandas:基于列表键与另一DataFrame匹配合并的问题

解决Pandas中按列表内键匹配替换数据的问题

步骤1:构造示例数据

先还原你提供的两个DataFrame:

import pandas as pd

# 创建df1
df1 = pd.DataFrame({
    'index': [0, 1],
    'team_id': [1234, 5678],
    'players': [[333, 444, 555], [890, 98, 766]]
})

# 创建df2
df2 = pd.DataFrame(
    data=[['7"', '6"'], ['300lbs', '250lbs']],
    index=['height', 'weight'],
    columns=['333', '766']
)

步骤2:转换df2为可快速查询的字典

把df2的列名(即匹配键)映射到对应的身高体重信息,同时将列名转为整数(匹配df1中players的元素类型):

# 转换为列名到属性的字典
player_attrs = df2.to_dict('columns')
# 键转为整数类型
player_attrs = {int(k): v for k, v in player_attrs.items()}

步骤3:定义替换逻辑并批量处理

写一个函数处理每个players列表,将匹配的键替换为目标格式的字符串,再用apply批量处理整个列:

def process_players(player_list):
    return [
        f"(height: {attrs['height']}, weight: {attrs['weight']})"
        if player in player_attrs
        else player
        for player in player_list
    ]

# 应用到players列
df1['players'] = df1['players'].apply(process_players)

最终结果

处理后df1的内容与你期望的一致:

index  team_id                                             players
0      0     1234  [(height: 7", weight: 300lbs), 444, 555]
1      1     5678  [890, 98, (height: 6", weight: 250lbs)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:45:39