合并多个数据框 pandas [英] Merge multiple dataframe pandas

查看:71
本文介绍了合并多个数据框 pandas 的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试将多个新的dataFrame合并到一个主框架中. 假设主数据框:

I try to merge multiple new dataFrames in a main one. Suppose main dataframe:

      key1           key2
0   0.365803    0.259112
1   0.086869    0.589834
2   0.269619    0.183644
3   0.755826    0.045187
4   0.204009    0.669371

然后我尝试将以下两个数据集合并到主要数据集中,
新数据1:

And I try to merge the 2 following datasets within the main one,
New data1:

        key1    key2    new feature
0   0.365803    0.259112    info1

新数据2:

        key1    key2    new feature
0   0.204009    0.669371    info2

预期结果:

       key1       key2  new feature
0   0.365803    0.259112    info1
1   0.776945    0.780978    NaN
2   0.275891    0.114998    NaN
3   0.667057    0.373029    NaN
4   0.204009    0.669371    info2

我尝试过的事情:

test = test.merge(data1, left_on=['key1', 'key2'], right_on=['key1', 'key2'], how='left')
test = test.merge(data2, left_on=['key1', 'key2'], right_on=['key1', 'key2'], how='left')

第一个效果很好,但第二个效果不好:

Works well for the first one, but not for the second, the result I get:

        key1    key2    new feature_x   new feature_y
0   0.365803    0.259112    info1      NaN
1   0.776945    0.780978    NaN        NaN
2   0.275891    0.114998    NaN        NaN
3   0.667057    0.373029    NaN        NaN
4   0.204009    0.669371    NaN       info2

感谢您的帮助!

推荐答案

首先 append concat merge一起,然后merge:

dat = pd.concat([data1, data2], ignore_index=True)

或者:

dat = data1.append(data2, ignore_index=True)

print (dat)
       key1      key2 new feature
0  0.365803  0.259112       info1
1  0.204009  0.669371       info2


#if same joined columns names better is only on parameter
df = test.merge(dat, on=['key1', 'key2'], how='left')

print (df)
       key1      key2 new feature
0  0.365803  0.259112       info1
1  0.086869  0.589834         NaN
2  0.269619  0.183644         NaN
3  0.755826  0.045187         NaN
4  0.204009  0.669371       info2

这篇关于合并多个数据框 pandas 的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆