使用 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
我正在尝试使用 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