用 yfinance 替换 NaN 值

时间:2021-07-01 14:46:04

标签: python python-3.x pandas yahoo-finance yfinance

我正在使用 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 值,然后将其设置为等于价格。但是,我不确定如何执行此操作。

1 个答案:

答案 0 :(得分:1)

您在寻找 fillna https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.fillna.html

data.fillna(method='ffill', inplace=True, axis=1)