使用 python 同时计算多只股票的股息率和日期

Dividend rates and dates for multiple stocks at once using python

我正在尝试使用 yfianance 包下载多只股票的股息金额和各自的日期,并尝试将其保存在 python 数据框中。

我正在使用以下代码

import yfinance as yf

data = pd.DataFrame()
stock_list = ['MSFT','GOOG','AAPL']

start = '2019-10-1'
end = '2020-10-30'

for i in stock_list:
    data[i]= yf.Ticker(i).dividends.loc[start:end]

但我得到的是:

           MSFT  GOOG  AAPL
Date                        
2019-11-20  0.51   NaN   NaN
2020-02-19  0.51   NaN   NaN
2020-05-20  0.51   NaN   NaN
2020-08-19  0.51   NaN   NaN

如果我将 stock_list 中的股票头寸更改为(首先是 AAPL,最后是 MSFT)

stock_list = ['AAPL','GOOG','MSFT']

我明白了:

             AAPL  GOOG  MSFT
Date                          
2019-11-07  0.1925   NaN   NaN
2020-02-07  0.1925   NaN   NaN
2020-05-08  0.8200   NaN   NaN
2020-08-07  0.2050   NaN   NaN

我认为数据框架为第一只股票设置了日期,因为后续股票不必在显示为 NaN 的同一日期支付股息。

如能帮助我在给定期间内获得一长串股票的所有股息,我将不胜感激。

谢谢

由于每期分红日期不一样,因此首次收购日期与首次发行日期合并,可以使用pd.concat().[=12=查看列表]

data = pd.concat([data,yf.Ticker(i).dividends.loc[start:end]], join='outer',axis=1)

                MSFT    GOOG    AAPL
2019-11-07 00:00:00 NaN NaN 0.1925
2019-11-20 00:00:00 0.51    NaN NaN
2020-02-07 00:00:00 NaN NaN 0.1925
2020-02-19 00:00:00 0.51    NaN NaN
2020-05-08 00:00:00 NaN NaN 0.8200
2020-05-20 00:00:00 0.51    NaN NaN
2020-08-07 00:00:00 NaN NaN 0.2050
2020-08-19 00:00:00 0.51    NaN NaN

您可以使用 pd.concat。您可以观察到股息日期不同,这就是为什么您只获得第一列的实际值。

import yfinance as yf
import pandas as pd

data = pd.DataFrame()
stock_list = ['AAPL', 'MSFT','GOOG']

start = '2019-10-1'
end = '2020-10-30'

for i in stock_list:
    series = yf.Ticker(i).dividends.loc[start:end]
    data = pd.concat([data, series], axis=1)
data.columns = stock_list