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
相关产品推荐
相关产品推荐

