【发布时间】:2019-09-23 09:12:02
【问题描述】:
我正在处理 pandas df 中的时间序列数据,它没有真正的日历日期,但有一个索引值,表示每个值之间的时间间隔相等。我正在尝试将其转换为具有每日或每周频率的日期时间类型。有没有办法在更改类型时保持值相同(例如不设置实际日历日期)?
Index,Col1,Col2
1,6.5,0.7
2,6.2,0.3
3,0.4,2.1
【问题讨论】:
标签: pandas datetime time-series
我正在处理 pandas df 中的时间序列数据,它没有真正的日历日期,但有一个索引值,表示每个值之间的时间间隔相等。我正在尝试将其转换为具有每日或每周频率的日期时间类型。有没有办法在更改类型时保持值相同(例如不设置实际日历日期)?
Index,Col1,Col2
1,6.5,0.7
2,6.2,0.3
3,0.4,2.1
【问题讨论】:
标签: pandas datetime time-series
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
或者,您可以将timedeltas 添加到指定的开始:
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)
【讨论】: