首页 > 解决方案 > Python用以前的值填充NaN

问题描述

嗨,我在NaN用以前的值填充数据框时遇到问题,我已将 csv 导入数据框stock_store并创建了一个新的 dfdata[]和以下代码:

 # Import csv to df 'stock_store[]'
 stock_store=pd.read_csv('HKEX-01128.csv',parse_dates=['Date'], index_col=['Date'])
 
 data["D-Chg"]=stock_store['Adj Close'] - stock_store['Adj Close'].shift(1, freq='B')
 data["D-Chg"].replace('NaN',np.NaN).fillna('pad')
 print(data["D-Chg"].head(100))

      Date
 2009-10-09         NaN
 2009-10-12   -0.049069
 2009-10-13    0.122673
 2009-10-14    0.110408
 2009-10-15   -0.429356
 2009-10-16    0.159474
 2009-10-19   -0.036801
 2009-10-20    0.061336
 2009-10-21    0.000000
 2009-10-22   -0.208543
 2009-10-23   -0.110407
 2009-10-27         NaN
 2009-10-28   -0.423221
 2009-10-29   -0.012268

它不起作用,因为 Nan 仍然出现。我尝试过其他方法,例如data["D-Chg"].fillna(method='ffill')data[["D-Chg"]==""]=np.NaN两者都不起作用。

谢谢

JC

标签: pythondataframe

解决方案


如评论中所述,只需将结果分配给所选列:

data["D-Chg"] = data["D-Chg"].fillna(method='ffill')

请注意,使用此方法,第一个元素不会获得非 NaN 值。您将需要手动设置它。


推荐阅读