我有两个要与两个共享列(Symbol
,Date
)共享的数据框:
df1
Company Symbol ID Date Price
0 A Inc AA 123 2019-03-31 1.0
1 A Inc AA 123 2019-06-30 NaN
2 A Inc AA 123 2019-09-30 3.0
3 B Inc BB 456 2019-03-31 5.0
4 B Inc BB 456 2019-06-30 6.0
5 B Inc BB 456 2019-09-30 7.0
6 X Inc XX 999 2019-03-31 9.0
df2
Symbol Date Price Income
0 AA 2019-03-31 1.1 10
1 AA 2019-06-30 2.1 11
2 AA 2019-09-30 3.1 12
3 BB 2019-03-31 5.1 14
4 BB 2019-06-30 6.1 15
5 BB 2019-09-30 7.1 16
6 ZZ 2019-03-31 8.0 20
如果Price
和df1
中存在df2
,那么我想使用df1
中的那个;但是,在df1
中不存在的情况下,我想使用df2
中的那个,以便输出如下:
Company Symbol ID Date Price Income
0 A Inc AA 123.0 2019-03-31 1.0 10.0
1 A Inc AA 123.0 2019-06-30 2.1 11.0
2 A Inc AA 123.0 2019-09-30 3.0 12.0
3 B Inc BB 456.0 2019-03-31 5.0 14.0
4 B Inc BB 456.0 2019-06-30 6.0 15.0
5 B Inc BB 456.0 2019-09-30 7.0 16.0
6 X Inc XX 999.0 2019-03-31 9.0 NaN
7 NaN ZZ NaN 2019-03-31 8.0 20.0
df3 = pd.merge(df1, df2, on=['Date', 'Symbol'], how='outer')
让我接近,但是在删除NaN
之前,如何用Price_x
列中的值替换Price_y
中的Price_y
值?
答案 0 :(得分:1)
您可以在merge
df3 = pd.merge(df1, df2, on=['Date', 'Symbol'], how='outer')
df3['Price']=df3.Price_x.fillna(df3.Price_y)
df3=df3.drop(['Price_x','Price_y'],axis=1)