2017-02-09 4 views
2

I Hawe два DataFrame:Панды dataframe сливаться с данными для обновления

df1 = pd.DataFrame({'date':['2017-01-01','2017-01-02','2017-01-03','2017-01-04','2017-01-05'], 'value':[1,1,1,1,1]}) 
df2 = pd.DataFrame({'date':['2017-01-04','2017-01-05','2017-01-06','2017-01-07','2017-01-08'], 'value':[2,2,2,2,2]}) 

date  value  date  value   
2017-01-01  1  2017-01-04  2 
2017-01-02  1  2017-01-05  2 
2017-01-03  1  2017-01-06  2 
2017-01-04  1  2017-01-07  2 
2017-01-05  1  2017-01-08  2 

нужно объединить df1 и df2 получить следующие результаты:

date  value 
2017-01-01  1 
2017-01-02  1 
2017-01-03  1 
2017-01-04  2 
2017-01-05  2 
2017-01-06  2 
2017-01-07  2 
2017-01-08  2 

ответ

2

Вы можете использовать concat с drop_duplicates по колонке date и сохранить последние значения:

print (pd.concat([df1, df2]).drop_duplicates('date', keep='last')) 
     date value 
0 2017-01-01  1 
1 2017-01-02  1 
2 2017-01-03  1 
0 2017-01-04  2 
1 2017-01-05  2 
2 2017-01-06  2 
3 2017-01-07  2 
4 2017-01-08  2 
+0

Большое спасибо за быстрый ответ - он работает! –

0

Я считаю, что вы можете использовать команду comb_first, встроенную в pandas.

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.combine_first.html

в этом случае вы могли бы сделать

DF3 = df1.combine_first (df2)

Я не уверен, если он работает в случае, если вы заменяете целое с целым числом или, если вам понадобятся значения NaN.

+0

Это не работает в моем случае –

Смежные вопросы