我有一个涵盖1979年1月的时间序列,其中包含6个小时的时间增量。时间格式在连续的小时范围内:
1
7
13
18
25
31
.
.
.
739
是否可以将这些 ints 转换为日期?例如:
1979/01/01 - 1:00
1979/01/01 - 7:00
1979/01/01 - 13:00
1979/01/01 - 18:00
1979/01/02 - 1:00
非常感谢您!
答案 0 :(得分:4)
设置
df = pd.DataFrame({'hour': [1,7,13,18,25,31]})
将 pd.to_datetime
标志与 unit
标志一起使用,并将 origin
标志设置为理想年份的开始。
pd.to_datetime(df.hour, unit='h', origin='1979-01-01')
0 1979-01-01 01:00:00
1 1979-01-01 07:00:00
2 1979-01-01 13:00:00
3 1979-01-01 18:00:00
4 1979-01-02 01:00:00
5 1979-01-02 07:00:00
Name: hour, dtype: datetime64[ns]
答案 1 :(得分:3)
这是另一种方式:
import pandas as pd
s = pd.Series([1,7,13])
s = pd.to_datetime(s*1e9*60*60+ pd.Timestamp(1979,1,1).value)
print(s)
返回:
0 1979-01-01 01:00:00
1 1979-01-01 07:00:00
2 1979-01-01 13:00:00
dtype: datetime64[ns]
答案 2 :(得分:1)
也可以这样做:
from datetime import datetime, timedelta
s = pd.Series([1,7,13,18,25])
s = s.apply(lambda h: datetime(1979, 1, 1) + timedelta(hours=h))
print(s)
返回:
0 1979-01-01 01:00:00
1 1979-01-01 07:00:00
2 1979-01-01 13:00:00
3 1979-01-01 18:00:00
4 1979-01-02 01:00:00
dtype: datetime64[ns]