首页 文章

索引的奇怪行为

提问于
浏览
1

我有一个大型DataFrame索引由下面的类型的日期时间

2013-07-15 09:30:00.073000,-0.909437,0.287493,-0.071288

当我尝试以下代码时,我得到一个结果

tempdf[tempdf.index[1]:tempdf.index[2]]

但是当我尝试

tempdf[tempdf.index[2]]

我收到以下错误

KeyError: u'no item named 2013-07-15 09:30:00.076000'

实际上,以下类型的代码也会出错 .

tempdf[tempdf.index[3]:tempdf.index[8]]

1 回答

  • 2

    您正在使用不适用的索引快捷方式,请参见此处:http://pandas.pydata.org/pandas-docs/dev/timeseries.html#datetime-indexing

    创建时间索引框架

    In [7]: df = DataFrame(randn(10,2),columns=list('AB'),index=date_range('20130101',periods=10))
    
    In [8]: df
    Out[8]: 
                       A         B
    2013-01-01 -1.423000  0.455915
    2013-01-02 -0.665164 -0.057901
    2013-01-03  2.446799 -1.788711
    2013-01-04  0.054663  0.254730
    2013-01-05 -0.371827 -0.775781
    2013-01-06  0.275138 -1.221521
    2013-01-07  1.338971  0.652810
    2013-01-08  0.454797 -0.966469
    2013-01-09  0.942590  0.302687
    2013-01-10 -0.587606 -0.562724
    

    这是切片在行上选择的便利

    In [9]: df[df.index[1]:df.index[2]]
    Out[9]: 
                       A         B
    2013-01-02 -0.665164 -0.057901
    2013-01-03  2.446799 -1.788711
    

    这会给你一个错误,因为它寻找一个列(你传递了一个值)

    In [10]: df[df.index[2]]
    KeyError: u'no item named 2013-01-03 00:00:00'
    

    这是一种没有歧义的选择方法

    从行中选择单个项目

    In [11]: df.loc[df.index[2]]
    Out[11]: 
    A    2.446799
    B   -1.788711
    Name: 2013-01-03 00:00:00, dtype: float64
    

    从行中选择一个范围

    In [12]: df.loc[df.index[2]:df.index[3]]
    Out[12]: 
                       A         B
    2013-01-03  2.446799 -1.788711
    2013-01-04  0.054663  0.254730
    

    从列中选择

    In [13]: df.loc[:,'A']
    Out[13]: 
    2013-01-01   -1.423000
    2013-01-02   -0.665164
    2013-01-03    2.446799
    2013-01-04    0.054663
    2013-01-05   -0.371827
    2013-01-06    0.275138
    2013-01-07    1.338971
    2013-01-08    0.454797
    2013-01-09    0.942590
    2013-01-10   -0.587606
    Freq: D, Name: A, dtype: float64
    

    如果wes重新做了这件事,我认为这个API不会被允许......但是太过根深蒂固 [] 选择是过度的,大熊猫会尽力弄清楚你想要什么

相关问题