Pandas - 根据另一个单元格的先前值填充 NaN

Abd*_*dul 4 python pandas

我正在重新采样数据框中的一些股票数据,这会导致一些 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')没有帮助,因为它根据同一列上的最后一个值填充它。任何想法?

jez*_*ael 5

首先向前填充最后一列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)