我正在使用 yfinance 获取 SP500 中股票的数据。这是我的代码:
tickers = self.getSP500Tickers() #returns all tickers in SP500 spaced out like "AAPL MSFT CSCO"
data = yf.download(tickers=tickers, period='50m', interval='1m')
代码本质上工作并返回:
Adj Close ... Volume
A AAL AAP AAPL ABBV ABC ... XYL YUM ZBH ZBRA ZION ZTS
Datetime ...
2021-07-01 09:50:00-04:00 NaN 21.511200 205.889999 NaN NaN 115.260002 ... NaN NaN 0.0 NaN NaN 0.0
2021-07-01 09:51:00-04:00 148.029999 21.508301 NaN 137.050003 113.290001 115.410004 ... 0.0 0.0 2387.0 NaN 0.0 3208.0
2021-07-01 09:52:00-04:00 148.164993 21.480000 206.225006 136.904999 113.290001 115.510002 ... 541.0 2534.0 2948.0 0.0 NaN 17014.0
2021-07-01 09:53:00-04:00 148.050003 21.549900 206.207504 136.860001 113.320000 115.470001 ... 368.0 2134.0 508.0 382.0 1808.0 4161.0
2021-07-01 09:54:00-04:00 148.050003 21.549999 206.330002 136.679993 113.389999 115.470001 ... 588.0 2887.0 1175.0 5030.0 1120.0 3231.0
2021-07-01 09:55:00-04:00 148.009995 21.514999 206.115005 136.690002 113.410004 115.550003 ... 842.0 7034.0 1109.0 1705.0 2888.0 1687.0
2021-07-01 09:56:00-04:00 148.024994 21.520100 NaN 136.845001 113.404999 115.669998 ... 1164.0 2785.0 254.0 960.0 1104.0 760.0
2021-07-01 09:57:00-04:00 147.970001 21.525000 NaN 136.869995 113.410004 115.519997 ... 628.0 7904.0 2685.0 220.0 1857.0 874.0
2021-07-01 09:58:00-04:00 148.029999 21.545000 NaN 136.919998 113.379997 115.480003 ... NaN 2200.0 1020.0 769.0 1519.0 NaN
如您所见,有许多空值。我希望访问我对 Price = data.tail(1)['Close'].values[0][i]
所做的每只股票的最新值,其中 i 是适用于每只股票的迭代器。但是,如果将最新值设置为 NaN 会干扰我的脚本计算,则会出现问题。无论如何我可以确保将价格设置为最近可用的值吗?我在想我们是否可以解析过去的收盘价,直到找到一个非 NaN 值,然后将其设置为等于价格。但是,我不确定如何执行此操作。
答案 0 :(得分:1)
您在寻找 fillna https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html
data.fillna(method='ffill', inplace=True, axis=1)