如何将时间数据(格式为yyyymmdd hh:mm:ss)拆分为测试和列车组?

2024-03-29 08:40:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个时间序列数据,它的时间格式是“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:]
...

Tags: 数据方法datadate格式hh时间序列
1条回答
网友
1楼 · 发布于 2024-03-29 08:40:31

我假设你的时间戳已经分类了,所以你可以使用

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]

作为一种替代方法,您可以查看sklearnTimeSeriesSplit。你知道吗

相关问题 更多 >