如何在Pandas DataFrame中为球员匹配对应俱乐部并创建Club列?
实现球员与所属俱乐部的匹配
完全可以用Python结合Pandas实现这个需求,核心思路是先标记出俱乐部行并向下填充俱乐部名称,再过滤掉不需要的行,具体步骤如下:
步骤说明
- 识别数据中的俱乐部行:这类行的
Player列是俱乐部名称,且Age、Nat.列为空值 - 将俱乐部名称向下填充,让其下方的球员行自动继承对应的俱乐部
- 过滤掉原始数据中的俱乐部行,保留表头行和球员行
完整代码
import pandas as pd # 原始数据 df = pd.DataFrame([['Arsenal FC', '', ''], ['In', 'Age', 'Nat.'], ['Leandro Trossard', 28, 'Belgium'], ['Jakub Kiwior', 22, 'Poland'], ['Jorginho', 32, 'Italy'], ['Chelsea FC', '', ''], ['In', 'Age', 'Nat.'], ['Enzo Fernández ', 22, 'Argentina'], ['Mykhaylo Mudryk', 22, 'Ukraine'], ], columns=['Player', 'Age', 'Nat.']) # 1. 创建Club列,标记俱乐部行 df['Club'] = df.apply(lambda row: row['Player'] if row['Age'] == '' and row['Nat.'] == '' else pd.NA, axis=1) # 2. 向下填充俱乐部名称,确保球员行匹配对应俱乐部 df['Club'] = df['Club'].ffill() # 3. 过滤掉原始的俱乐部行(即Player等于Club的行) df = df[df['Player'] != df['Club']].reset_index(drop=True) # 查看结果 print(df)
输出结果
Player Age Nat. Club 0 In Age Nat. <NA> 1 Leandro Trossard 28 Belgium Arsenal FC 2 Jakub Kiwior 22 Poland Arsenal FC 3 Jorginho 32 Italy Arsenal FC 4 In Age Nat. <NA> 5 Enzo Fernández 22 Argentina Chelsea FC 6 Mykhaylo Mudryk 22 Ukraine Chelsea FC
内容的提问来源于stack exchange,提问作者code_machine
相关产品推荐
相关产品推荐

