Converting Pandas DatetimeIndex to a numeric format
我想将我的DataFrame中的DatetimeIndex转换为float格式,可以在我的模型中进行分析。有人可以告诉我该怎么做吗? 我需要使用date2num()函数吗?
非常感谢!
转换为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | df date 0 2013-01-01 1 2013-01-02 2 2013-01-03 3 2013-01-04 4 2013-01-05 5 2013-01-06 6 2013-01-07 7 2013-01-08 8 2013-01-09 9 2013-01-10 pd.to_timedelta(df.date).dt.total_seconds() 0 1.356998e+09 1 1.357085e+09 2 1.357171e+09 3 1.357258e+09 4 1.357344e+09 5 1.357430e+09 6 1.357517e+09 7 1.357603e+09 8 1.357690e+09 9 1.357776e+09 Name: date, dtype: float64 |
或者,也许,数据作为
1 2 3 4 5 6 7 8 9 10 11 12 13 | pd.to_timedelta(df.date).dt.total_seconds().astype(int) 0 1356998400 1 1357084800 2 1357171200 3 1357257600 4 1357344000 5 1357430400 6 1357516800 7 1357603200 8 1357689600 9 1357776000 Name: date, dtype: int64 |
使用astype float,即如果你有一个数据帧
1 2 3 4 | df = pd.DataFrame({'date': ['1998-03-01 00:00:01', '2001-04-01 00:00:01','1998-06-01 00:00:01','2001-08-01 00:00:01','2001-05-03 00:00:01','1994-03-01 00:00:01'] }) df['date'] = pd.to_datetime(df['date']) df['x'] = list('abcdef') df = df.set_index('date') |
然后
1 2 3 4 5 6 7 8 9 10 11 | df.index.values.astype(float) array([ 8.88710401e+17, 9.86083201e+17, 8.96659201e+17, 9.96624001e+17, 9.88848001e+17, 7.62480001e+17]) pd.to_datetime(df.index.values.astype(float)) DatetimeIndex(['1998-03-01 00:00:01', '2001-04-01 00:00:01', '1998-06-01 00:00:01', '2001-08-01 00:00:01', '2001-05-03 00:00:01', '1994-03-01 00:00:01'], dtype='datetime64[ns]', freq=None) |
我找到了另一个解决方
1 | df['date'] = df['date'].astype('datetime64').astype(int).astype(float) |