我有 4 个数据帧,其中的数据具有相似的日期时间索引,但是在每个数据帧中,缺少的行很少,我知道可以使用以前的已知数据来填补空白。
我想“对齐”这些数据帧,以便它们具有所有数据帧的索引的联合并填充缺失值。我知道如何为 2 个数据框执行此操作:df1, df2 = df1.align(df2, axis=0, method='pad')
但是对于 2 个以上的数据框有什么好的方法呢?
我已经尝试过了,它确实有效:
df1 = pd.DataFrame({'values': 1}, index=pd.DatetimeIndex(['2016-06-01', '2016-06-03']))
df2 = pd.DataFrame({'values': 2}, index=pd.DatetimeIndex(['2016-06-02', '2016-06-04', '2016-06-07']))
df3 = pd.DataFrame({'values': 3}, index=pd.DatetimeIndex(['2016-06-01', '2016-06-05']))
commonIndex = df1.index.join(df2.index, how='outer').join(df3.index, how='outer')
for d in [df1, df2, df3]:
d = d.reindex(index=commonIndex, method='pad')
但是,当我对真实数据尝试相同的方法时,它会给出错误:“ValueError:索引必须是单调递增或递减”。它是价格数据,指数看起来像这样:
DatetimeIndex(['2014-03-24 00:00:00', '2014-03-24 00:01:00',
'2014-03-24 00:02:00', '2014-03-24 00:03:00',
'2014-03-24 00:04:00', '2014-03-24 00:05:00',
'2014-03-24 00:06:00', '2014-03-24 00:07:00',
'2014-03-24 00:08:00', '2014-03-24 00:09:00',
...
'2014-10-10 17:51:00', '2014-10-10 17:52:00',
'2014-10-10 17:53:00', '2014-10-10 17:54:00',
'2014-10-10 17:55:00', '2014-10-10 17:56:00',
'2014-10-10 17:57:00', '2014-10-10 17:58:00',
'2014-10-10 17:59:00', '2014-10-10 18:00:00'],
dtype='datetime64[ns]', name=u'datetime', length=139671, freq=None)
据我了解应该会增加。不确定“单调”,但我认为这不是上面示例中所示的约束(仍然缺少日期)。
非常感谢任何帮助,如果我没有使用正确的术语,请原谅我。
PS 当我遍历数据框列表时,看起来它们在应用重新索引后实际上并未保存在 df1、df2、df3 中。我该如何解决?