我有两个DataFrame,第一个是我的主要df,第二个是我想要更新'第一个用。
基本上,我有以下内容:
In [205]: df1
Out[205]:
date total
0 04/10/2016 10
1 04/10/2016 20
2 04/10/2016 30
3 04/10/2016 40
4 04/10/2016 50
In [206]: df2
Out[206]:
date new
0 04/11/2016 1
1 04/11/2016 2
2 04/11/2016 3
当我合并时,我会得到两个日期列。
In [207]: pd.merge(df1, df2, left_index=True, right_index=True, how='outer')
Out[207]:
date_x total date_y new
0 04/10/2016 10 04/11/2016 1.0
1 04/10/2016 20 04/11/2016 2.0
2 04/10/2016 30 04/11/2016 3.0
3 04/10/2016 40 NaN NaN
4 04/10/2016 50 NaN NaN
无论如何,我可以覆盖date
中的原始df1
列吗?
现在,我会这样做:
In [209]: df3['date_x'].update(df3['date_y'])
In [210]: df3
Out[210]:
date_x total date_y new
0 04/11/2016 10 04/11/2016 1.0
1 04/11/2016 20 04/11/2016 2.0
2 04/11/2016 30 04/11/2016 3.0
3 04/10/2016 40 NaN NaN
4 04/10/2016 50 NaN NaN
并尝试删除date_y
,但这似乎并不高效。
我也尝试了combine_first
,但在某些情况下,这会给我带来不良后果(例如,如果我的原始日期为空白,我将新的日期合并到一起。)。
答案 0 :(得分:1)
试试这个,这是merge的文档:
In [154]: pd.merge(df2, df1, left_index=True, right_index=True, on='date', how='outer')
Out[154]:
date total new
0 04/11/2016 10 1
1 04/11/2016 20 2
2 04/11/2016 30 3
3 04/10/2016 40 NaN
4 04/10/2016 50 NaN