首页 > 解决方案 > 合并列表中包含公共列的所有数据框

问题描述

我有一个数据框列表:

dfList= [df1,df2]

shape of df1 (100,3)
shape of df2 (100,3)

df1

a  b  c
1  2  4
1  2  3
1  2  6  
1  3  9

df2 

a  b  d
1  2  9
1  2  11
1  2  6  
1  3  3

我想合并或连接列表中的所有数据框以获得以下最终数据框:

df_final
a  b  c  d
1  2  4  9
1  2  3  11
1  2  6  6  
1  3  9  3

我正在尝试以下代码:

df_final = pd.merge(left=dfList[0], right=dfList[1], how='inner')

但我想处理如果列表中有超过 2 个数据框的情况,例如dfList=[df1,df2,df3,df4].

标签: pythonpandas

解决方案


在这种情况下,我认为它会更容易使用pd.concat,然后只需删除重复的列:

df_final = pd.concat(dfList,axis=1).reset_index(drop=True).T.drop_duplicates().T

基于给定输入数据的示例

dfList = [df1,df2]
df_final = pd.concat(dfList,axis=1).reset_index(drop=True).T.drop_duplicates().T
print(df_final)

输出

   a  b  c   d
0  1  2  4   9
1  1  2  3  11
2  1  2  6   6
3  1  3  9   3

推荐阅读