为什么筛选的日期范围与我的开始日期不同



我使用此代码来获取BTC值,但日期是从我选择的前一天开始的。

输入:

tickers=['BTC-USD']  # Name of asset
tarih="02-06-2021"
tarih2="05-06-2021"
start=dt.datetime.strptime(tarih, '%d-%m-%Y')
end=dt.datetime.strptime(tarih2, '%d-%m-%Y')
returns=pd.DataFrame()
liste=[]                    
for ticker in tickers:
data=web.DataReader(ticker,'yahoo',start,end)
data=pd.DataFrame(data)
data[ticker]=data['Adj Close'] #can work with change percentage in order to get more accurate data
if returns.empty:
returns=data[[ticker]]
else:
returns = returns.join(data[[ticker]],how='outer')#add right column
for dt in daterange(start, end):
dates=dt.strftime("%d-%m-%Y")
with open("fng_value.txt", "r") as filestream:
for line in filestream:
date = line.split(",")[0]
if dates == date:
fng_value=line.split(",")[1]
liste.append(fng_value)
print(returns.head(25))

输出:

BTC-USD
Date                    
2021-06-01  37575.179688
2021-06-02  39208.765625
2021-06-03  36894.406250
2021-06-04  35551.957031
2021-06-05  35862.378906

DataReader接受字符串、日期或日期时间形式的开始参数。显然,有时使用开始日期(例如2021-06-02(检索从2021-06-01的前一天开始的数据。试着使用一个带时区的日期时间和一天中晚一个小时来破解日期,如果它没有返回你期望的结果。

看看这是否有效:

import pandas_datareader.data as web
import pandas as pd
from pytz import timezone
from datetime import datetime, date
tarih = "02-06-2021"
tarih2 = "05-06-2021"
# start/end can be date, datetime, or string
#start = date(2021, 6, 2)
#end = date(2021, 6, 5)
#start = 'JUN-02-2021'
#end = 'JUN-05-2021'
start = datetime.strptime(tarih, '%d-%m-%Y').replace(hour=23, tzinfo=timezone('EST'))
end = datetime.strptime(tarih2, '%d-%m-%Y').replace(tzinfo=timezone('EST'))
tickers=['BTC-USD']  # Name of asset
for ticker in tickers:
data = web.DataReader(ticker, 'yahoo', start, end)
data = pd.DataFrame(data)
print(data)

这将返回从6/2到6/5的数据。

最新更新