Python 使用非单调索引对数据帧进行切片会产生意外的结果

Python 使用非单调索引对数据帧进行切片会产生意外的结果,python,datetime,pandas,slice,Python,Datetime,Pandas,Slice,对不起,这是一个关于熊猫切片的基本问题。假设我创建一个具有非单调索引的数据帧: df1 = pd.concat( [ pd.DataFrame( randn(2,2), index=pd.date_range('2014/01/01', periods=2) ), pd.DataFrame( randn(2,2), index=pd.date_range('2013/01/01', periods=2) ), ] ) 输出: 0

对不起,这是一个关于熊猫切片的基本问题。假设我创建一个具有非单调索引的数据帧:

df1 = pd.concat( [ pd.DataFrame( randn(2,2), index=pd.date_range('2014/01/01', periods=2) ), 
                  pd.DataFrame( randn(2,2), index=pd.date_range('2013/01/01', periods=2) ), ] )
输出:

             0           1
2014-01-01   0.493182   -2.115045
2014-01-02   0.773144   -0.857416
2013-01-01  -1.048656   -0.066363
2013-01-02   0.022071    0.034887
以下工作如预期:

df1[ pd.Timestamp('2013-01-01'): ]
输出

             0           1
2013-01-01  -1.048656   -0.066363
2013-01-02   0.022071    0.034887
但如果我做了以下事情:

df1[ '2013-01-01': ]
我明白了:

             0           1
2014-01-01   0.493182   -2.115045
2014-01-02   0.773144   -0.857416
2013-01-01  -1.048656   -0.066363
2013-01-02   0.022071    0.034887
当索引不是单调的时,为什么会返回整个数据帧?

,特别是其中的注释可能就是您遇到的。可能使用
df1.loc['2013-01-01':]
。只要使用df1['str':]就可以为DatetimeIndexes使用特殊语法,该语法假定索引已排序。