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

时间:2017-03-23 18:22:32

标签: python-3.x pandas dataframe merge missing-data

所以我有两个数据帧,一个是数据帧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']进行比较,并使用第一个数据框df中的值填充缺失值

我可以使用此代码执行布尔过滤器,但我不知道如何从那里继续:

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

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

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用fillna()

void onObjectMaterialized(object sender, ObjectMaterializedEventArgs e) {
  // your code here
}

另一种更快捷的方法是combine_first

df2 = df2.fillna(df1)

两者都将返回

df2 = df2.combine_first(df1)