如何将数字列(无日历日期)转换为日期时间

时间:2019-05-05 14:52:17

标签: pandas datetime time-series

我正在使用pandas df中的时间序列数据,该数据没有真实的日历日期,但有一个索引值,指示每个值之间的时间间隔相等。我正在尝试将其转换为具有每日或每周频率的日期时间类型。有没有一种方法可以在更改类型时保持相同的值(例如不设置实际的日历日期)?

Index,Col1,Col2

1,6.5,0.7

2,6.2,0.3

3,0.4,2.1

1 个答案:

答案 0 :(得分:1)

pd.to_datetime可以在给定相对于某个原点的时间单位时创建日期。默认值为POSIX原点1970-01-01 00:00:00和时间(以纳秒为单位)。

import pandas as pd

df['date1'] = pd.to_datetime(df.index, unit='D', origin='2010-01-01')
df['date2'] = pd.to_datetime(df.index, unit='W')

输出:

#       Col1  Col2      date1      date2
#Index                                  
#1       6.5   0.7 2010-01-02 1970-01-08
#2       6.2   0.3 2010-01-03 1970-01-15
#3       0.4   2.1 2010-01-04 1970-01-22

或者,您可以将timedelta添加到指定的开始位置:

pd.to_datetime('2010-01-01') + pd.to_timedelta(df.index, unit='D')

或仅将其保留为timedelta

pd.to_timedelta(df.index, unit='D')
#TimedeltaIndex(['1 days', '2 days', '3 days'], dtype='timedelta64[ns]', name='Index', freq=None)