2017-05-30 42 views
0

我有以下2個dataframes:數據幀合併/聯同部分指數重疊

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爲重疊。

我想這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

使用combine_first

df1.combine_first(df2) 
Out: 
    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 
1

您可以使用CONCAT,軸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