数据帧合并/连接在具有部分索引重叠的行上

时间:2017-05-30 16:55:38

标签: python pandas join merge

我有以下2个数据帧:

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

df2 = pd.DataFrame({'E': ['E2', 'E3', 'E4'],
   ...:             'F': ['F2', 'F3', 'F4']},
   ...:                 index=[2, 3, 4])

正如您所见,df1和df2只有索引2作为重叠。

我希望以最终结果为:

的方式组合这两个df
df3 = pd.DataFrame({'A': ['A0', 'A1', 'A2',np.nan,np.nan],
   ...:                     'B': ['B0', 'B1', 'B2',np.nan,np.nan],
   ...:                     'C': ['C0', 'C1', 'C2',np.nan, np.nan],
   ...:                     'D': ['D0', 'D1', 'D2',np.nan,np.nan],
                            'E': [np.nan, np.nan, 'E2','E3','E4'],
                            'F': [np.nan, np.nan, 'F2','F3','F4']},
   ...:                     index=[0, 1, 2,3,4])

2 个答案:

答案 0 :(得分:2)

使用combine_first

fold

答案 1 :(得分:1)

您可以使用concat,axis 1

pd.concat([df1,df2],axis=1)

    A   B   C   D   E   F
0   A0  B0  C0  D0  NaN NaN
1   A1  B1  C1  D1  NaN NaN
2   A2  B2  C2  D2  E2  F2
3   NaN NaN NaN NaN E3  F3
4   NaN NaN NaN NaN E4  F4