首页 > 解决方案 > 如何根据顺序合并熊猫中的两个数据框

问题描述

我有两个要合并的 df,但它们没有公共列。

因此,我在每个名为的数据框上创建了一个临时列tmp

y_pred['tmp'] = 1
data['tmp'] = 1 

data好像:

     mean  year  tmp
4600  2.3  2019  1
2601  5.3  2020  1

y_pred看起来像:

     pred_score  tmp
0     2           1
1     5.2         1

我合并它们:

new_df = pd.merge(data, y_pred, on=['tmp'], how='left')
new_df.drop('tmp', inplace=True, axis=1)

我得到 900 行,而我只需要 30 行(假设数据集每个有 30 行,我得到 30 乘以 30)

而我需要的是new_df有 30 行并将列合并pred_scoredata当前行的顺序。

这样我就会得到:

新的_df:

     mean  year  pred_score
4600  2.3  2019  2
2601  5.3  2020  5.2

有没有办法在没有公共列的情况下实现这一目标?

标签: pythonpandas

解决方案


使用y_pred.values

>>> data
      mean  year
4600   2.3  2019
2601   5.3  2020

>>> y_pred
   pred_score
0         2.0
1         5.2

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

# Output
      mean  year  pred_score
4600   2.3  2019         2.0
2601   5.3  2020         5.2

推荐阅读