簡體   English   中英

使用Datetime索引或列查詢Python Pandas DataFrame

[英]Querying Python Pandas DataFrame with a Datetime index or column

因此,我對Pandas軟件包不熟悉。 我當時正在對ETF策略進行回溯測試,我需要對Pandas Dataframe進行很多查詢。

假設我是df和df1這兩個DataFrame,唯一的區別是:df具有datetime索引,而df1具有timestamp作為列和整數Index

In[104]: df.head()
Out[104]: 

                       high     low    open   close   volume  openInterest
2007-04-24 09:31:00  148.28  148.12  148.23  148.15  2304400        341400
2007-04-24 09:32:00  148.21  148.14  148.14  148.19  2753500        449100
2007-04-24 09:33:00  148.24  148.13  148.18  148.14  2863400        109900
2007-04-24 09:34:00  148.18  148.12  148.13  148.16  3118287        254887
2007-04-24 09:35:00  148.17  148.14  148.16  148.16  3202112         83825

In[105]: df1.head()
Out[105]: 

                dates    high     low    open   close   volume  openInterest
0 2007-04-24 09:31:00  148.28  148.12  148.23  148.15  2304400        341400
1 2007-04-24 09:32:00  148.21  148.14  148.14  148.19  2753500        449100
2 2007-04-24 09:33:00  148.24  148.13  148.18  148.14  2863400        109900
3 2007-04-24 09:34:00  148.18  148.12  148.13  148.16  3118287        254887
4 2007-04-24 09:35:00  148.17  148.14  148.16  148.16  3202112         83825

所以我測試一下查詢速度:

In[100]: %timeit df1[(df1['dates'] >= '2015-11-17') & (df1['dates'] < '2015-11-18')]
%timeit df.loc[(df.index >= '2015-11-17') & (df.index < '2015-11-18')]
%timeit df.loc['2015-11-17']
100 loops, best of 3: 4.67 ms per loop
100 loops, best of 3: 3.14 ms per loop
1 loop, best of 3: 259 ms per loop

令我驚訝的是,使用熊貓內置的邏輯實際上是最慢的:

df.loc['2015-11-17']

有誰知道那是為什么? 是否有任何文檔或博客有關查詢Pandas DataFrame的最有效方法?

如果我是你,我將使用更簡單的方法:

df['2015-11-17']  

在我看來,這比在單個日期中使用.loc[]更像是“熊貓邏輯”。 我猜它也更快。

在分鍾的OHLC數據幀上進行測試:

%timeit df.loc[(df.index >= '2015-11-17') & (df.index < '2015-11-18')]
%timeit df.loc['2015-11-17']
%timeit df['2015-11-17']

100 loops, best of 3: 13.8 ms per loop
1 loop, best of 3: 1.39 s per loop
1000 loops, best of 3: 486 us per loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM