簡體   English   中英

如何使用 Pandas 在雅虎財經上選擇匹配的日期/行和上一個日期/行?

[英]How to select matching date/row and previous date(s)/row(s) on Yahoo Finance using Pandas?

我的目的是在 CSCO 股票的股票日數據 df 中選擇股息日期和以前的日期。 我能夠合並索引和代碼上的兩個數據集,但是還沒有弄清楚如何選擇以前的日期/行。

from yahoo_fin.stock_info import get_data, get_dividends
import numpy as np
import pandas as pd

stock_data = get_data('csco', start_date="10/01/2021", end_date="10/07/2021", index_as_date = True, interval="1d") 
    
div_data = get_dividends('csco', "09/01/2021")

stock_data = stock_data.reset_index()
div_data = div_data.reset_index()

print(stock_data)
print(div_data)

輸出:

       index       open       high  ...   adjclose    volume  ticker
0 2021-10-01  54.599998  55.410000  ...  54.770000  18338000    CSCO
1 2021-10-04  54.500000  54.680000  ...  54.230000  17084100    CSCO
2 2021-10-05  54.130001  55.029999  ...  54.689999  14135000    CSCO
3 2021-10-06  54.349998  54.380001  ...  53.939999  26339200    CSCO

       index  dividend ticker
0 2021-10-04      0.37   CSCO

現在,我可以根據索引和代碼進行合並:

print(pd.merge(stock_data, div_data, on=['index', 'ticker'],  how='inner'))

輸出:

       index  open   high        low  ...  adjclose    volume  ticker dividend
0 2021-10-04  54.5  54.68  53.950001  ...     54.23  17084100    CSCO     0.37

但是,我也想要上一個日期(所以在股息支付日期的前一天,股票沒有分紅。我想要的輸出:

       index  open   high        low  ...  and close    volume  ticker dividend
0 2021-10-01  54.599998  55.410000  ...  54.770000  18338000    CSCO
0 2021-10-04  54.5  54.68  53.950001  ...     54.23  17084100    CSCO     0.37

除了匹配行之外,還有什么關於如何選擇以前的日期的建議嗎?

通過檢查也存在於div_data中的stock_data的日期創建一個布爾掩碼,然后從stock_data刪除除掩碼中當前和先前值為True的行之外的行。 現在您可以執行左合並以獲得所需的結果

m = stock_data['index'].isin(div_data['index'])
stock_data[m | m.shift(-1)].merge(div_data, on=['index', 'ticker'], how='left')

       index       open   high        low      close  adjclose    volume ticker  dividend
0 2021-10-01  54.599998  55.41  54.040001  55.139999     54.77  18338000   CSCO       NaN
1 2021-10-04  54.500000  54.68  53.950001  54.230000     54.23  17084100   CSCO      0.37

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM