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

合并数据集触发pandas.errors.MergeError,求正确代码

解决pandas合并时的MergeError问题

错误原因

报错MergeError: Not allowed to merge between different levels是因为races_df和runs_df的索引层级不匹配(一个是单层索引,一个是多层索引),而join方法默认会结合索引与指定列进行匹配,导致冲突。

修正方案

方案1:用merge替代join(推荐)

merge方法专门针对列匹配进行合并,不受索引层级影响,逻辑更清晰:

data = races_df.merge(runs_df, on='race_id', how='right')
X = data[data.columns[:-14]]
ss = preprocessing.StandardScaler()
X = pd.DataFrame(ss.fit_transform(X), columns = X.columns)
y_won = data[data.columns[-14:]].applymap(lambda x: 1.0 if 0.5 < x < 1.5 else 0.0)
    
print(X.shape)
print(y_won.shape)

方案2:统一索引层级后用join

如果坚持使用join,需要先将多层索引的DataFrame转为单层索引,再执行合并:

# 假设runs_df是多层索引,先重置索引
runs_df = runs_df.reset_index()
# 以race_id为索引进行join
data = races_df.join(runs_df.set_index('race_id'), on='race_id', how='right')

# 后续处理代码不变
X = data[data.columns[:-14]]
ss = preprocessing.StandardScaler()
X = pd.DataFrame(ss.fit_transform(X), columns = X.columns)
y_won = data[data.columns[-14:]].applymap(lambda x: 1.0 if 0.5 < x < 1.5 else 0.0)
    
print(X.shape)
print(y_won.shape)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:52:19