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

如何拆分DataFrame列并合并回原表?merge无匹配列问题求解

解决DataFrame拆分位置列后合并的问题

嘿,我来帮你搞定这个问题~你遇到的报错是因为merge方法默认会寻找两个DataFrame中列名完全相同的列作为合并依据,但你的playerData和拆分出来的secondData没有共同的列(除了行索引,但merge默认不会用索引当合并键),所以才会提示“无匹配列”。

其实完全不需要用merge,因为拆分后的secondData和原playerData的行是一一对应的,直接把新列加到原DataFrame里,或者用join基于索引合并就好,下面给你两种实用方案:

方案1:直接添加拆分后的列到原DataFrame

这是最简洁高效的方式,一步到位:

import pandas as pd

filename = "DKSalaries.csv"
playerData = pd.read_csv(filename)

# 拆分RosterPosition列,得到两列数据
split_cols = playerData['RosterPosition'].str.split('/', 1, expand=True)
# 把拆分后的列命名并添加到原DataFrame
playerData['Primary Position'] = split_cols[0]
playerData['Secondary Position'] = split_cols[1]

# 如果你想删掉原来的RosterPosition列,可以加这行
# playerData.drop('RosterPosition', axis=1, inplace=True)

print(playerData)

方案2:用join基于索引合并

如果你想保留拆分后的secondData作为单独的DataFrame,用join就很合适——它默认就是按行索引来合并的:

import pandas as pd

filename = "DKSalaries.csv"
playerData = pd.read_csv(filename)

# 拆分并重命名列
secondData = playerData['RosterPosition'].str.split('/', 1, expand=True).rename(
    columns={0:'Primary Position', 1:'Secondary Position'}
)

# 基于索引合并两个DataFrame
newData = playerData.join(secondData)

# 可选:删除原RosterPosition列
# newData.drop('RosterPosition', axis=1, inplace=True)

print(newData)

额外小提示

  • 如果有些球员只有单个位置(比如RosterPosition是CF没有斜杠),那么Secondary Position列会自动填充为NaN,你可以根据需求替换成空字符串或者其他值:
    playerData['Secondary Position'] = playerData['Secondary Position'].fillna('')
    
  • 要是你非要用merge的话,也可以强制基于索引合并,但完全没必要这么绕:
    newData = playerData.merge(secondData, how='left', left_index=True, right_index=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:44:58