时间数据与格式“'%H:%M.%S%f'”不匹配

时间:2018-12-06 11:26:40

标签: python pandas datetime

我正在尝试预测时间序列数据。
我的csv文件中的时间序列数据的格式为0:00.000 因此,我对时间序列数据列建立了索引,如下所示:

df.columns=['Elapsed','I']
df['Elapsed']=pd.to_datetime(df['Elapsed'], format='%H:%M.%S%f')
df['Elapsed']=df['Elapsed'].dt.time
df.set_index('Elapsed', inplace=True)

然后,我将数据分为测试部分和训练部分

train = df.loc['0:00.000':'0:28.778']
test = df.loc['0:28.779':] 

我的堆栈跟踪是 enter image description here enter image description here 我的数据摘录是:

enter image description here

任何人都可以解释如何防止出现此错误吗?

2 个答案:

答案 0 :(得分:1)

由于问题现已更改,我将写一个新答案。

您的数据帧由datetime.time的实例索引,但是您正尝试使用字符串对其进行切片-大熊猫不想将字符串与时间进行比较。

要使切片工作,请尝试以下操作:

split_from = datetime.datetime.strptime('0:00.000', '%H:%M.%S%f').time()
split_to = datetime.datetime.strptime('0:28.778', '%H:%M.%S%f').time()
train = df[split_from:split_to]

将格式保留在变量中也很有用,因为您现在已在多个地方使用它。

或者,如果您有固定的分段时间,则可以改为

split_from = datetime.time(0, 0, 0)
split_to = datetime.time(0, 28, 77.8)
train = df[split_from:split_to]

答案 1 :(得分:0)

我只是在猜测而没有看到您的数据,但是这里有:

我猜您的“已过去”列中的原始数据看起来像

'12:34.5678'
'12:35.1234'

尤其是,它在数字的两边都有引号。否则,您的行

df['Elapsed']=pd.to_datetime(df['Elapsed'], format="'%H:%M.%S%f'")

会失败。

因此错误消息告诉您切片时间格式错误:它们的每一边都缺少引号。更改为

train = df.loc["'0:00.000'":"'0:28.778'"]

(下一行同样如此),希望可以解决该问题。

如果可以避免在时间戳记中使用引号字符的方式提取源数据,则可能会发现事情简单一些。