比较两个相似的数据帧并填充一个数据帧的缺失值

Comparing two similar dataframes and filling in missing values of one dataframe

所以我有两个数据帧,一个是数据帧字典的单个数据帧 stocks['OPK'],另一个只是一个简单的 Pandas 数据帧 df

这是 df 的一部分,df.loc['2010-01-04':, 'Open'] 我很感兴趣与其他数据帧进行比较。

Date          Open
2010-01-04    1.80
2010-01-05    1.64
2010-01-06    1.90
2010-01-07    1.79
2010-01-08    1.92
2010-01-11    1.90
2010-01-12    1.89
2010-01-13    1.82
2010-01-14    1.84
2010-01-15    1.85
2010-01-19    1.77

这是另一个数据框stocks['OPK'].Open

2010-01-04    1.80
2010-01-05    1.64
2010-01-06     NaN 
2010-01-07    1.79
2010-01-08     NaN 
2010-01-11    1.90
2010-01-12    1.89
2010-01-13    1.82
2010-01-14     NaN 
2010-01-15    1.85
2010-01-19     NaN 

如您所见,第二个数据框有缺失值。

由于两个索引都是日期时间格式,我希望能够将 stock['OPK'].Opendf.loc['2010-01-04':, 'Open'] 进行比较,并用第一个数据帧 [=14] 中的值填充缺失值=]

我可以用这段代码做一个布尔过滤器,但我不知道如何从那里开始:

stocks['OPK'].Open == df.loc['2010-01-04':, 'Open']

pd.merge及其各自选项的问题在于它似乎添加了额外的 列。我只想通过比较可能具有缺失值的另一个数据框来填充缺失值(如果有的话)。

谢谢。

您可以使用 fillna()

df2 = df2.fillna(df1)

另一种更快的方法是 combine_first

df2 = df2.combine_first(df1)

两者都会return

    Date    Open
0   2010-01-04  1.80
1   2010-01-05  1.64
2   2010-01-06  1.90
3   2010-01-07  1.79
4   2010-01-08  1.92
5   2010-01-11  1.90
6   2010-01-12  1.89
7   2010-01-13  1.82
8   2010-01-14  1.84 
9   2010-01-15  1.85
10  2010-01-19  1.77