根据同一列合并多个数据框 [英] Merge multiple dataframes based on a common column

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

问题描述

我有三个数据框。它们都有一个公共列,我需要根据公共列合并它们,而不会丢失任何数据

I have Three dataframes. All of them have a common column and I need to merge them based on the common column without missing any data

输入


>>>df1
0 Col1  Col2  Col3
1 data1  3      4
2 data2  4      3
3 data3  2      3
4 data4  2      4
5 data5  1      4

>>>df2
0 Col1  Col4  Col5
1 data1  7      4
2 data2  6      9
3 data3  1      4

>>>df3
0 Col1  Col6  Col7
1 data2  5      8
2 data3  2      7
3 data5  5      3

预期输出


>>>df
0 Col1  Col2  Col3  Col4 Col5  Col6  Col7
1 data1  3      4    7    4
2 data2  4      3    6    9     5     8
3 data3  2      3    1    4     2     7
4 data4  2      4
5 data5  1      4               5     3


推荐答案

使用合并 reduce

In [86]: from functools import reduce

In [87]: reduce(lambda x,y: pd.merge(x,y, on='Col1', how='outer'), [df1, df2, df3])
Out[87]:
    Col1  Col2  Col3  Col4  Col5  Col6  Col7
0  data1     3     4   7.0   4.0   NaN   NaN
1  data2     4     3   6.0   9.0   5.0   8.0
2  data3     2     3   1.0   4.0   2.0   7.0
3  data4     2     4   NaN   NaN   NaN   NaN
4  data5     1     4   NaN   NaN   5.0   3.0






详细信息


Details

In [88]: df1
Out[88]:
    Col1  Col2  Col3
0  data1     3     4
1  data2     4     3
2  data3     2     3
3  data4     2     4
4  data5     1     4

In [89]: df2
Out[89]:
    Col1  Col4  Col5
0  data1     7     4
1  data2     6     9
2  data3     1     4

In [90]: df3
Out[90]:
    Col1  Col6  Col7
0  data2     5     8
1  data3     2     7
2  data5     5     3

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

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