重新采样OHLC滴答数据并填补熊猫的空白

时间:2013-12-26 21:04:16

标签: python pandas time-series resampling

我有一些这种形式的刻度数据:

date                 price    amount
2011-09-13 13:53:36  5.80     1.0000
2011-09-13 13:53:44  5.83     3.0000
2011-09-13 14:32:53  5.90     2.0000

我用以下方式对价格进行了重新抽样:

resampledData.price.resample('55min', how="ohlc")

现在我需要填写缺失的数据,我想出的唯一方法是:

closes = resampledData.close
closes = closes.fillna(method='pad')
resampledData = resampledData.open.fillna(closes)
resampledData = resampledData.high.fillna(closes)
resampledData = resampledData.lowe.fillna(closes)
resampledData = resampledData.close.fillna(closes)

但这看起来很糟糕,有没有更有效的方法呢?

另外,有没有办法同时重新采样两列?就像“ohlc”的价格和方法“sum”的金额一样?

1 个答案:

答案 0 :(得分:3)

为了填充NaN,您可以在一行中的所有列上应用它,如下所示:

closes = resampledData['close'].fillna(method='pad')
resampledData.apply(lambda x: x.fillna(closes))

您还有一个fillna方法用于DataFrame(http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.fillna.html),但这会将系列视为输入,作为用于不同列的不同值。

对于重新取样,通常您可以执行以下操作,一次在多个列上使用不同的函数重新取样:

resampledData.resample('55min', how={'price':'ohlc', 'amount':'sum'})

但对我而言,这似乎不适用于ohlc(如果你将其改为例如'卑鄙',那么它确实有用)。