我正在重新采样数据框中的一些股票数据,这会导致一些 NaN 值。这是原始 Feed 的一部分:
In [34]: feeddf
Out[34]:
open high low close volume
date
2017-12-03 07:00:00 14.46 14.46 14.46 14.46 25000
2017-12-03 07:01:00 14.46 14.46 14.46 14.46 20917
2017-12-03 07:06:00 14.50 14.50 14.50 14.50 2000
2017-12-03 07:12:00 14.50 14.56 14.50 14.56 17000
Run Code Online (Sandbox Code Playgroud)
该提要应该是按分钟进行的,但是当没有可用数据时,该行将被跳过。当重新采样数据帧并聚合开盘价、最高价、最低价和收盘价时,它看起来像这样:
In [35]: feeddf.resample('3Min').agg({'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last'})
Out[35]:
open high low close
date
2017-12-03 07:00:00 14.46 14.46 14.46 14.46
2017-12-03 07:03:00 NaN NaN NaN NaN
2017-12-03 07:06:00 14.50 14.50 14.50 14.50
2017-12-03 07:09:00 NaN NaN NaN NaN
2017-12-03 07:12:00 14.50 14.56 14.50 14.56
Run Code Online (Sandbox Code Playgroud)
我的问题:我想根据最后一行的close值向前填充缺失的数据。df.fillna(method='ffill')没有帮助,因为它根据同一列上的最后一个值填充它。任何想法?
首先向前填充最后一列close,然后bfill按列:
print (df)
open high low close
date
2017-12-03 07:00:00 14.46 14.46 14.46 14.81
2017-12-03 07:03:00 NaN NaN NaN NaN
2017-12-03 07:06:00 14.50 14.50 14.50 14.59
2017-12-03 07:09:00 NaN NaN NaN NaN
2017-12-03 07:12:00 14.50 14.56 14.50 14.56
df['close'] = df['close'].ffill()
df = df.bfill(axis=1)
print (df)
open high low close
date
2017-12-03 07:00:00 14.46 14.46 14.46 14.81
2017-12-03 07:03:00 14.81 14.81 14.81 14.81
2017-12-03 07:06:00 14.50 14.50 14.50 14.59
2017-12-03 07:09:00 14.59 14.59 14.59 14.59
2017-12-03 07:12:00 14.50 14.56 14.50 14.56
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3460 次 |
| 最近记录: |