[英]How to change time format in a csv file from DD:MM:YY HH:MM to YYYY-MM-DD HH:MM:SS. or YYYY/MM/DD HH:MM:SS
[英]How to split time data (in format of yyyy-mm-dd hh:mm:ss) to test and train sets?
我有一个时间序列数据,其时间格式为“ yyyy-mm-dd hh:mm:ss
”。 我想将行分为训练和测试集。 但是我尝试执行此操作的所有方法都失败了。
如何将以下数据拆分为测试集和训练集:
DATE-TIME TEMP PRE
2018-08-4 15:18:49 209.3851 4045.4414
2018-08-4 15:18:50 209.3851 4045.4314
2018-08-4 15:18:51 209.3581 4045.4268
2018-08-4 15:18:52 209.3553 4045.4343
2018-08-4 15:18:53 209.3553 4045.4307
...
下面的代码不起作用:
...
split_date = pd.Timestamp('2018-08-4 15:18:52')
train = data.loc[:split_date]
test = data.loc[split_date:]
...
我认为您的时间戳是经过排序的,因此您可以使用
split_date = pd.Timestamp('2018-08-4 15:18:52')
train = df[df['DATE-TIME'] < split_date]
test = df[df['DATE-TIME'] > split_date]
结果:
培养:
DATE-TIME TEMP PRE
0 2018-08-04 15:18:49 209.3851 4045.4414
1 2018-08-04 15:18:50 209.3851 4045.4314
2 2018-08-04 15:18:51 209.3581 4045.4268
测试:
DATE-TIME TEMP PRE
4 2018-08-04 15:18:53 209.3553 4045.4307
也许您必须先将columntype转换为datetime格式:
df['DATE-TIME'] = pd.to_datetime(df['DATE-TIME'])
如果您的时间戳记是索引而不是数据帧的列,只需将df['DATE-TIME']
替换为df.index
df.index = pd.to_datetime(df.index)
split_date = pd.Timestamp('2018-08-4 15:18:52')
train = df[df.index < split_date]
test = df[df.index > split_date]
或者,您可以查看sklearn
TimeSeriesSplit 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.