我有一些这种形式的刻度数据:
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”的金额一样?
答案 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
(如果你将其改为例如'卑鄙',那么它确实有用)。