我有以下数据框
p12Diff
Pump Time
3 -2.90 -0.000919
-2.89 -0.000795
-2.88 -0.000814
-2.87 -0.000700
-2.86 -0.000847
-2.85 -0.000769
-2.84 -0.000681
-2.83 -0.000888
-2.82 -0.000815
-2.81 -0.000764
-2.80 -0.000879
-2.70 -0.000757
-2.60 -0.000758
-2.50 -0.000707
奇怪的是,当我用idx=IndexSlice
切片某些范围时,我得到一个KeyError
,而对于其他人,它只是有效。例如,df.loc[idx[:,-2.90:-2.52],:]
削减为-2.60,而df.loc[idx[:,-2.90:-2.62],:]
则提升KeyError: -2.62
。
这可能是个错误吗?
答案 0 :(得分:1)
这是固定为0.15.0(RC1现在已经出局),请参见此处:http://pandas.pydata.org/。 0.14.1对于这种类型的索引有点麻烦。
In [13]: df = DataFrame({'value' : np.arange(11)},index=pd.MultiIndex.from_product([[1],np.linspace(-2.9,-2.3,11)]))
In [14]: df
Out[14]:
value
1 -2.90 0
-2.84 1
-2.78 2
-2.72 3
-2.66 4
-2.60 5
-2.54 6
-2.48 7
-2.42 8
-2.36 9
-2.30 10
In [15]: idx = pd.IndexSlice
In [16]: df.loc[idx[:,-2.9:-2.42],]
Out[16]:
value
1 -2.90 0
-2.84 1
-2.78 2
-2.72 3
-2.66 4
-2.60 5
-2.54 6
-2.48 7
-2.42 8
In [17]: df.loc[idx[:,-2.9:-2.52],]
Out[17]:
value
1 -2.90 0
-2.84 1
-2.78 2
-2.72 3
-2.66 4
-2.60 5
-2.54 6
In [18]: df.loc[idx[:,-2.84:-2.52],]
Out[18]:
value
1 -2.84 1
-2.78 2
-2.72 3
-2.66 4
-2.60 5
-2.54 6
In [19]: df.loc[idx[:,-2.85:-2.52],]
Out[19]:
value
1 -2.84 1
-2.78 2
-2.72 3
-2.66 4
-2.60 5
-2.54 6