【问题标题】:Index Slicing with Float64Index not working in pandas使用 Float64Index 进行索引切片在熊猫中不起作用
【发布时间】:2014-12-03 09:22:02
【问题描述】:

我有以下数据框

             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

这可能是一个错误吗?

【问题讨论】:

  • 什么版本的熊猫?

标签: python pandas


【解决方案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

【讨论】:

  • 太棒了!我现在就试一试。谢谢老兄。
猜你喜欢
  • 2019-05-15
  • 2017-02-27
  • 2015-02-01
  • 2019-10-28
  • 1970-01-01
  • 2021-08-07
  • 2014-10-11
  • 2017-02-22
  • 1970-01-01
相关资源
最近更新 更多