2017-05-26 204 views
3

我有兩個dataframes df_1df_2具有不同指數和列。但是,有一些索引和列重疊。大熊貓結合dataframes不同指數

我創建了一個數據幀df與索引的聯合和列的:因此存在不重複指數或列。

我想填寫以下方式數據幀df

for x in df.index: 
    for y in df.columns: 
    df.loc[x,y] = df_1.loc[x,y] if (x,y) in (df_1.index,df_1.columns) else df_2.loc[x,y] 

誰能告訴我一個有效的方式來做到這一點?

謝謝!

回答

2

我想你需要DataFrame.combine_first

df_1 = pd.DataFrame({'A':[1,2,3], 
        'E':[4,5,6], 
        'V':[7,8,9], 
        'D':[1,3,5]}, 
        index=pd.to_datetime(['2017-01-05', '2017-01-04', '2017-01-01'])) 

print (df_1) 
      A D E V 
2017-01-05 1 1 4 7 
2017-01-04 2 3 5 8 
2017-01-01 3 5 6 9 

df_2 = pd.DataFrame({'A':[1,2,3], 
        'B':[4,5,6], 
        'C':[7,8,9]}, index=pd.date_range('2017-01-01', periods=3)) * 10 

print (df_2) 
      A B C 
2017-01-01 10 40 70 
2017-01-02 20 50 80 
2017-01-03 30 60 90 

df = df_1.combine_first(df_2) 
print (df) 
       A  B  C D E V 
2017-01-01 3.0 40.0 70.0 5.0 6.0 9.0 
2017-01-02 20.0 50.0 80.0 NaN NaN NaN 
2017-01-03 30.0 60.0 90.0 NaN NaN NaN 
2017-01-04 2.0 NaN NaN 3.0 5.0 8.0 
2017-01-05 1.0 NaN NaN 1.0 4.0 7.0 
+0

驚人!索引和列是否自動分類?因爲我的索引是日期索引。 – riccio777

+1

我想是的,但不是100%肯定,如果不加'.sort_index()'。 – jezrael

+1

我測試了一下,漂亮的種種datetimeindex。我也改變它的樣本。 – jezrael