【问题标题】:Dividend rates and dates for multiple stocks at once using python使用python一次为多只股票的股息率和日期
【发布时间】:2021-02-25 01:47:09
【问题描述】:

我正在尝试使用 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 first and MSFT last)

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。

如果能在特定时期内为一长串股票获得所有股息,我将不胜感激。

谢谢

【问题讨论】:

标签: python pandas dataframe yfinance stock-data


【解决方案1】:

由于每期的分红日期不同,首次收购日期与首次发行日期合并,您可以使用pd.concat()查看列表。

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

【讨论】:

  • 谢谢,我只需要添加一个循环并在最后添加列名。这很有帮助。:)
【解决方案2】:

您可以使用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

【讨论】:

  • 完全符合我的要求。我现在只需要考虑 NaN,但上面的代码可以达到目的。谢谢
  • @RizwanAhmed 我很高兴它有帮助。我想在这种情况下,NaN 可能只是 0,因为有些公司只是不支付股息。如果是这种情况,您可以使用data.fillna(0)
  • 我同意这将进一步使它看起来更干净。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-09-17
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 2016-05-18
相关资源
最近更新 更多