按日期过滤 Pandas 数据框不起作用
Filtering Pandas Dataframe by date not working
我正在使用 Cryptowatch API 下载比特币价格数据。下载价格数据效果很好,但我只需要 1 个月前的价格数据,即 2019 年 10 月 29 日至 2019 年 11 月 28 日的数据。我阅读了几个类似问题的答案,但它似乎不适用于我的代码,因为过滤后得到的输出与未过滤后得到的输出相同。
这是我的代码:
#define 1day period
periods = '86400'
#get price data from cryptowatchAPI
resp = requests.get('https://api.cryptowat.ch/markets/bitfinex/btcusd/ohlc', params={'periods': periods})
resp.ok
#create pandas dataframe
data = resp.json()
df = pd.DataFrame(data['result'][periods], columns=[
'CloseTime', 'OpenPrice', 'HighPrice', 'LowPrice', 'ClosePrice', 'Volume', 'NA'])
#Make a date out of CloseTime
df['CloseTime'] = pd.to_datetime(df['CloseTime'], unit='s')
#make CloseTime Index of the Dataframe
df.set_index('CloseTime', inplace=True)
#filter df by date until 1 month ago
df.loc[datetime.date(year=2019,month=10,day=29):datetime.date(year=2019,month=11,day=28)]
df
没有错误或任何错误,但输出始终相同,因此过滤不起作用。
非常感谢您!!
使用 string
s 日期时间格式进行过滤,另请查看 docs 中的更多信息:
df1 = df['2019-10-29':'2019-11-28']
或者:
s = datetime.datetime(year=2019,month=10,day=29)
e = datetime.datetime(year=2019,month=11,day=28)
df1 = df[s:e]
我正在使用 Cryptowatch API 下载比特币价格数据。下载价格数据效果很好,但我只需要 1 个月前的价格数据,即 2019 年 10 月 29 日至 2019 年 11 月 28 日的数据。我阅读了几个类似问题的答案,但它似乎不适用于我的代码,因为过滤后得到的输出与未过滤后得到的输出相同。
这是我的代码:
#define 1day period
periods = '86400'
#get price data from cryptowatchAPI
resp = requests.get('https://api.cryptowat.ch/markets/bitfinex/btcusd/ohlc', params={'periods': periods})
resp.ok
#create pandas dataframe
data = resp.json()
df = pd.DataFrame(data['result'][periods], columns=[
'CloseTime', 'OpenPrice', 'HighPrice', 'LowPrice', 'ClosePrice', 'Volume', 'NA'])
#Make a date out of CloseTime
df['CloseTime'] = pd.to_datetime(df['CloseTime'], unit='s')
#make CloseTime Index of the Dataframe
df.set_index('CloseTime', inplace=True)
#filter df by date until 1 month ago
df.loc[datetime.date(year=2019,month=10,day=29):datetime.date(year=2019,month=11,day=28)]
df
没有错误或任何错误,但输出始终相同,因此过滤不起作用。 非常感谢您!!
使用 string
s 日期时间格式进行过滤,另请查看 docs 中的更多信息:
df1 = df['2019-10-29':'2019-11-28']
或者:
s = datetime.datetime(year=2019,month=10,day=29)
e = datetime.datetime(year=2019,month=11,day=28)
df1 = df[s:e]