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

如何在pandas中按行顺序合并无共同列的两个DataFrame

可行的实现方法

你完全不需要设置共同列即可实现按行顺序拼接列的需求,有以下几种简单方案:

方案1:直接赋值(最简洁)

直接把y_pred的pred_score列按顺序赋值给data即可,.values会取出numpy数组,忽略双方的索引差异,仅按行顺序匹配:

data['pred_score'] = y_pred['pred_score'].values

操作完成后data就是你需要的结果。

方案2:横向拼接(concat)

如果不想修改原data,可以用pd.concat沿列方向拼接,需要先重置双方索引避免索引不匹配导致的空值问题:

new_df = pd.concat(
    [data.reset_index(drop=True), y_pred[['pred_score']].reset_index(drop=True)],
    axis=1
)
# 如果需要保留原来data的索引,可以加下面这行
new_df.index = data.index

方案3:用行号作为临时合并键(仅当你需要用merge逻辑时可选)

如果一定要用merge实现,你可以用行号代替之前的固定值tmp作为合并键,避免笛卡尔积:

data['row_idx'] = range(len(data))
y_pred['row_idx'] = range(len(y_pred))
new_df = pd.merge(data, y_pred, on='row_idx', how='left').drop('row_idx', axis=1)

说明

以上所有方案的前提是:两个DataFrame行数完全一致,且行顺序严格对应你需要的匹配关系,否则会出现列值匹配错误。
你之前得到笛卡尔积结果是正常的:当合并键所有行的值都相同时,merge会返回两个表所有行的两两组合,30行*30行自然得到900行结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:06:07