Y finance 日期对齐

Y finance Date alignment

这可能是一道比较难的题;

我要编写的代码的范围是自动对齐我从 yfinance 提取的关于 BTC 和标准普尔 500 的日期

由于 S&P500 (SPY) 在周末不交易,但 BTC 是,我想自动删除 BTC 中周末(或 S&P 不交易的日子)的日期列,以始终如一对齐我的 2 个数据框。

在这种情况下,我在 BTC 中有 15 个数据行,而在 SPY 中我只有 10 个数据行

我只需要日期匹配的数据

有人知道我该怎么做吗?

import yfinance as yf
import pandas as pd



BTC = pd.Dataframe = yf.download(tickers='BTC-USD', period = '2wk', interval = '1d')
SPY = yf.download('SPY', start='2022-03-07', end='2022-03-21')


print(BTC)

                    Open          High  ...     Adj Close       Volume
Date                                    ...                           
2022-03-07  38429.304688  39430.226562  ...  38062.039062  28546143503
2022-03-08  38059.902344  39304.441406  ...  38737.269531  25776583476
2022-03-09  38742.816406  42465.671875  ...  41982.925781  32284121034
2022-03-10  41974.070312  42004.726562  ...  39437.460938  31078064711
2022-03-11  39439.968750  40081.679688  ...  38794.972656  26364890465
2022-03-12  38794.464844  39308.597656  ...  38904.011719  14616450657
2022-03-13  38884.726562  39209.351562  ...  37849.664062  17300745310
2022-03-14  37846.316406  39742.500000  ...  39666.753906  24322159070
2022-03-15  39664.250000  39794.628906  ...  39338.785156  23934000868
2022-03-16  39335.570312  41465.453125  ...  41143.929688  39616916192
2022-03-17  41140.843750  41287.535156  ...  40951.378906  22009601093
2022-03-18  40944.839844  42195.746094  ...  41801.156250  34421564942
2022-03-19  41794.648438  42316.554688  ...  42190.652344  19664853187
2022-03-20  42191.406250  42241.164062  ...  41247.824219  20127946682
2022-03-21  41259.656250  41420.941406  ...  41400.390625  23117129728
[15 rows x 6 columns]



print(SPY)

                  Open        High  ...   Adj Close     Volume
Date                                ...                       
2022-03-07  431.549988  432.299988  ...  418.131012  137896600
2022-03-08  419.619995  427.209991  ...  414.960876  164772700
2022-03-09  425.140015  429.510010  ...  426.086304  116990800
2022-03-10  422.519989  426.429993  ...  424.162292   93972700
2022-03-11  428.119995  428.769989  ...  418.769043   95529600
2022-03-14  420.890015  424.549988  ...  415.708557   95729200
2022-03-15  419.769989  426.839996  ...  424.850159  106219100
2022-03-16  429.890015  435.679993  ...  434.270874  144954800
2022-03-17  433.589996  441.070007  ...  439.704010  102676900
2022-03-18  438.000000  444.859985  ...  444.519989  106250400
[10 rows x 6 columns]

下面是用于此目的的更快选项:

f = pd.Series(BTC['Open'], index=SaP.index)

print(f)

根据您的理解,您想要实现的是在与 SPY 交易日相同的交易日拥有 BTC-USD 数据框,最简单的方法是重新分配 BTC 数据框间谍指数。

    BTC = BTC.reindex(SPY.index)

完整代码:

import yfinance as yf
import pandas as pd

BTC = yf.download('BTC-USD', period = '2wk', interval = '1d')
SPY = yf.download('SPY', start='2022-03-07', end='2022-03-21')

BTC

    Open    High    Low     Close   Adj Close   Volume
Date                        
2022-03-07  38429.304688    39430.226562    37260.203125    38062.039062    38062.039062    28546143503
2022-03-08  38059.902344    39304.441406    37957.386719    38737.269531    38737.269531    25776583476
2022-03-09  38742.816406    42465.671875    38706.093750    41982.925781    41982.925781    32284121034
2022-03-10  41974.070312    42004.726562    38832.941406    39437.460938    39437.460938    31078064711
2022-03-11  39439.968750    40081.679688    38347.433594    38794.972656    38794.972656    26364890465
2022-03-12  38794.464844    39308.597656    38772.535156    38904.011719    38904.011719    14616450657
2022-03-13  38884.726562    39209.351562    37728.144531    37849.664062    37849.664062    17300745310
2022-03-14  37846.316406    39742.500000    37680.734375    39666.753906    39666.753906    24322159070
2022-03-15  39664.250000    39794.628906    38310.210938    39338.785156    39338.785156    23934000868
2022-03-16  39335.570312    41465.453125    39022.347656    41143.929688    41143.929688    39616916192
2022-03-17  41140.843750    41287.535156    40662.871094    40951.378906    40951.378906    22009601093
2022-03-18  40944.839844    42195.746094    40302.398438    41801.156250    41801.156250    34421564942
2022-03-19  41794.648438    42316.554688    41602.667969    42190.652344    42190.652344    19664853187
2022-03-20  42191.406250    42241.164062    41004.757812    41247.824219    41247.824219    20127946682
2022-03-21  41259.656250    41420.941406    40691.011719    41198.937500    41198.937500    22954921984

SPY

    Open    High    Low     Close   Adj Close   Volume
Date                        
2022-03-07  431.549988  432.299988  419.359985  419.429993  418.131012  137896600
2022-03-08  419.619995  427.209991  415.119995  416.250000  414.960876  164772700
2022-03-09  425.140015  429.510010  422.820007  427.410004  426.086304  116990800
2022-03-10  422.519989  426.429993  420.440002  425.480011  424.162292  93972700
2022-03-11  428.119995  428.769989  419.529999  420.070007  418.769043  95529600
2022-03-14  420.890015  424.549988  415.790009  417.000000  415.708557  95729200
2022-03-15  419.769989  426.839996  418.420013  426.170013  424.850159  106219100
2022-03-16  429.890015  435.679993  424.799988  435.619995  434.270874  144954800
2022-03-17  433.589996  441.070007  433.190002  441.070007  439.704010  102676900
2022-03-18  438.000000  444.859985  437.220001  444.519989  444.519989  106250400

BTC = BTC.reindex(SPY.index)

BTC

    Open    High    Low     Close   Adj Close   Volume
Date                        
2022-03-07  38429.304688    39430.226562    37260.203125    38062.039062    38062.039062    28546143503
2022-03-08  38059.902344    39304.441406    37957.386719    38737.269531    38737.269531    25776583476
2022-03-09  38742.816406    42465.671875    38706.093750    41982.925781    41982.925781    32284121034
2022-03-10  41974.070312    42004.726562    38832.941406    39437.460938    39437.460938    31078064711
2022-03-11  39439.968750    40081.679688    38347.433594    38794.972656    38794.972656    26364890465
2022-03-14  37846.316406    39742.500000    37680.734375    39666.753906    39666.753906    24322159070
2022-03-15  39664.250000    39794.628906    38310.210938    39338.785156    39338.785156    23934000868
2022-03-16  39335.570312    41465.453125    39022.347656    41143.929688    41143.929688    39616916192
2022-03-17  41140.843750    41287.535156    40662.871094    40951.378906    40951.378906    22009601093
2022-03-18  40944.839844    42195.746094    40302.398438    41801.156250    41801.156250    34421564942