2013-10-31 151 views
2

我经常需要在索引中进行一些搜索,比Pandas DataFrame中的某些标准更高/更低。 我找到了一种方法来做到这一点,但感觉有点麻烦,或者某种程度上不太聪明。 这是我目前的方法:通过索引条件编写大熊猫数据帧切片索引

from numpy import linspace 
import pandas as pd 

df = pd.DataFrame(linspace(1,5,5),index=linspace(0.1,0.5,5)) 

df 

    0 
0.1 1 
0.2 2 
0.3 3 
0.4 4 
0.5 5 

df[(df.index>0.3) * (df.index <0.5)] 

    0 
0.3 3 
0.4 4 

它不会给我什么,我wan't,但请提出一个更好的方式,如果你有一个。

回答

1

我会这样做。使用类似浮动的索引进行操作有点不寻常,可能会带来意想不到的结果。在0.13(很快发布)中,它有更多的支持,但仍然不同于“常规”指数。请参阅here

In [4]: df = pd.DataFrame({ 'A' : np.linspace(1,5,5), 'B' : np.linspace(0.1,0.5,5) }) 

In [5]: df 
Out[5]: 
    A B 
0 1 0.1 
1 2 0.2 
2 3 0.3 
3 4 0.4 
4 5 0.5 

In [6]: df.loc[(df.B>0.3)&(df.B<0.5)] 
Out[6]: 
    A B 
2 3 0.3 
3 4 0.4 
+0

本示例实际上用于某些时间序列数据,具有100秒采样时间的400秒数据。另一个问题可能是如何在没有日期的情况下获得时间序列数据。 – mbk

+0

好的...然后Float64Index实际上是有用的然后! – Jeff

+0

这并不回答如何对索引进行子集化的问题。 – Elliott