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使用特殊语法,该语法假定索引已排序。