结合使用python消除常见列的熊猫数据框

时间:2019-06-13 02:19:35

标签: python pandas dataframe

我有3个数据框:

df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],\
                    'B': ['B0', 'B1', 'B2', 'B3'],\
                    'C': ['C0', 'C1', 'C2', 'C3'],\
                    'D': ['D0', 'D1', 'D2', 'D3']},\
                    index=[0,1,2,3])

df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],\
                    'E': ['E0', 'E1', 'E2', 'E3']},\
                    index=[0,1,2,3])

df3 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],\
                    'F': ['F0', 'F1', 'F2', 'F3']},\
                    index=[0,1,2,3])

我想将它们结合在一起以获得以下结果:

    A   B   C   D   E   F
0  A0  B0  C0  D0  E0  F0
1  A1  B1  C1  D1  E1  F1
2  A2  B2  C2  D2  E2  F2
3  A3  B3  C3  D3  E3  F3

当我尝试将它们结合时,我会不断得到:

    A   B   C   D   A   E   A   F
0  A0  B0  C0  D0  A0  E0  A0  F0
1  A1  B1  C1  D1  A1  E1  A1  F1
2  A2  B2  C2  D2  A2  E2  A2  F2
3  A3  B3  C3  D3  A3  E3  A3  F3

对于concat调用中使用的每个数据帧,公用列(A)重复一次。我已经尝试过各种组合:

df4 = pd.concat([df1, df2, df3], axis=1, sort=False)

有些变化是灾难性的,而有些变化却一直带来不希望的结果。任何建议将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

尝试

df4 = (pd.concat((df.set_index('A') for df in (df1,df2,df3)), axis=1)
         .reset_index()
      )

输出:

    A   B   C   D   E   F
0  A0  B0  C0  D0  E0  F0
1  A1  B1  C1  D1  E1  F1
2  A2  B2  C2  D2  E2  F2
3  A3  B3  C3  D3  E3  F3