熊猫系列小时值到日期系列

时间:2018-07-14 21:48:06

标签: python pandas date

我有一个涵盖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

非常感谢您!

3 个答案:

答案 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]
相关问题