我正在使用pandas df中的时间序列数据,该数据没有真实的日历日期,但有一个索引值,指示每个值之间的时间间隔相等。我正在尝试将其转换为具有每日或每周频率的日期时间类型。有没有一种方法可以在更改类型时保持相同的值(例如不设置实际的日历日期)?
Index,Col1,Col2
1,6.5,0.7
2,6.2,0.3
3,0.4,2.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)