这可能是一个相对困难的问题;
我想写的代码的范围是自动调整我从yfinance中提取的关于BTC和S&P 500
由于S&P500(SPY(在周末不交易,但BTC是,我想自动删除BTC中周末(或标准普尔不交易的日子(的日期列,以一致地对齐我的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]
考虑到您想要实现的是将BTC-USD数据帧与SPY交易日放在同一交易日,最简单的方法是将BTC数据帧重新分配给SPY指数。
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
下面有一个更快的选项:
f = pd.Series(BTC['Open'], index=SaP.index)
print(f)