pandas 使用python同时显示多个股票的股息率和日期

d6kp6zgx  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(97)

我试图下载多个股票股息金额和各自的日期使用yfinance包,并试图将其保存在一个python Dataframe 。
我使用以下代码

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。
我将感谢任何帮助,以获得所有股息在一个给定的时期内为一长串的股票。

e4yzc0pl

e4yzc0pl1#

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

zengzsys2#

由于首次收购日期与首次发行日期合并,因为每次发行的股息日期不同,因此可以使用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

相关问题