我正在尝试预测时间序列数据。
我的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':]
任何人都可以解释如何防止出现此错误吗?
答案 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'"]
(下一行同样如此),希望可以解决该问题。
如果可以避免在时间戳记中使用引号字符的方式提取源数据,则可能会发现事情简单一些。