我试图在时间序列数据上使用SKLearn的MinMaxScaler函数,为了使用它,我想我的值必须在dtype int64, float64
上,因为我可以将datetime值转换为单独的日期和时间,例如
DATETIME
0 2013-02-13 00:00:00
1 2013-02-13 00:30:00
2 2013-02-13 01:00:00
3 2013-02-13 01:30:00
4 2013-02-13 02:00:00
5 2013-02-13 02:30:00
6 2013-02-13 03:00:00
7 2013-02-13 03:30:00
8 2013-02-13 04:00:00
9 2013-02-13 04:30:00
10 2013-02-13 05:00:00
11 2013-02-13 05:30:00
到目前为止,我尝试将时间和日期分开,但是重新发布的时间甚至还没有达到0.5
这就是为什么我想分隔年,月和日,也许这些天的相关度为0.5或更多。
但是从熊猫到如何将其转换为我之前提到的dtypes,我该怎么做?
我知道我可以这样分开
series['YEAR'] = pd.DatetimeIndex(series['DATE']).year
series['MONTH'] = pd.DatetimeIndex(series['DATE']).month
series['DAY'] = pd.DatetimeIndex(series['DATE']).day
但是如何将它们转换为MinMax可接受的数据?
目标将其输出以将其转换为
Y M D T
2013 2 3 00:00:00
选择适合以下代码的dtypes
scaler = MinMaxScaler()
scaler.fit(series)
series = scaler.transform(series)
答案 0 :(得分:0)
我不确定您为什么要在日期功能上使用MinMaxScaler
,但不要爆炸日期,只需将它们转换为Unix时间戳即可。那将是解决您的问题的更好方法。
答案 1 :(得分:0)
IIUC,DATETIME
是一个索引,因此您需要:
df['Y'] = df.index.to_series().dt.year
df['M'] = df.index.to_series().dt.month
df['D'] = df.index.to_series().dt.day
输出:
Y M D
DATETIME
2013-02-13 00:00:00 2013 2 13
2013-02-13 00:30:00 2013 2 13
2013-02-13 01:00:00 2013 2 13
2013-02-13 01:30:00 2013 2 13
2013-02-13 02:00:00 2013 2 13
2013-02-13 02:30:00 2013 2 13
2013-02-13 03:00:00 2013 2 13
2013-02-13 03:30:00 2013 2 13
2013-02-13 04:00:00 2013 2 13
2013-02-13 04:30:00 2013 2 13
2013-02-13 05:00:00 2013 2 13
2013-02-13 05:30:00 2013 2 13