按日期过滤熊猫数据框不起作用

时间:2019-11-28 09:36:22

标签: python pandas dataframe filtering bitcoin

我正在使用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

没有错误或任何东西,但输出始终相同,因此过滤不起作用。 提前非常感谢您!

1 个答案:

答案 0 :(得分:3)

使用string的日期时间格式进行过滤,还检查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]