熊猫DatetimeIndex截断错误

cmi*_*er8 5 python slice pandas

我有一个熊猫数据框df

Out[16]:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 269850 entries, 2012-12-19 16:15:36 to 2012-12-20 14:36:55
Data columns:
X1    269850  non-null values
X2      269848  non-null values
X3      269848  non-null values
dtypes: float64(2), object(1)
Run Code Online (Sandbox Code Playgroud)

我想对数据帧进行切片,以从2012-12-20 05:00:00到返回四个小时的数据窗口2012-12-20 09:00:00

当我尝试:

Slicedf = df.truncate(before='12/20/2012 05:00:00',after='12/20/2012 09:00:00')
Run Code Online (Sandbox Code Playgroud)

发生以下错误:

KeyError: datetime.datetime(2012, 12, 20, 5, 0)
Run Code Online (Sandbox Code Playgroud)

我也尝试过(从Pandas DataFrame按天/小时/分钟分片):

from datetime import datetime
x=datetime(2012,12,20,5,0,0)
y=datetime(2012,12,20,9,0,0)
Slicedf = df.ix[x:y]
Run Code Online (Sandbox Code Playgroud)

返回完全相同的错误。

Hal*_*lee 5

您可能需要将其更改为:

df = df.sort_values()df = df.sort_index()在 truncate 函数之前,以修复更高版本 Pandas 中的错误。

所以你的代码看起来像: df = df.sort_index().truncate(before='12/20/2012 05:00:00', after='12/20/2012 09:00:00')

sort已弃用 DataFrames 以支持需要使用sort_valuessort_index。您可以分别在此处此处的文档中找到有关每个的更多详细信息。


cmi*_*er8 4

df是通过使用该concat函数将多个数据帧连接在一起创建的。

df = df.sort()截断之前修复了错误。