Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从小时值系列到日期系列_Python_Pandas_Date - Fatal编程技术网

Python 从小时值系列到日期系列

Python 从小时值系列到日期系列,python,pandas,date,Python,Pandas,Date,我有一个涵盖1979年1月的时间序列,有6个小时的时间增量。时间格式为连续小时范围: 1 7 13 18 25 31 . . . 739 是否可以将这些整数转换为日期?例如: 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 非常感谢你 设置 使用带有标记的pd.to\u datetime,并将

我有一个涵盖1979年1月的时间序列,有6个小时的时间增量。时间格式为连续小时范围:

1
7
13
18
25
31
.
.
.
739
是否可以将这些整数转换为日期?例如:

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
非常感谢你

设置

使用带有
标记的
pd.to\u datetime
,并将
标记设置为所需年份的开始

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]
设置

使用带有
标记的
pd.to\u datetime
,并将
标记设置为所需年份的开始

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]
还有一种方法:

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]
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]
还有一种方法:

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]
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]

也可以这样做:

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
dtype: datetime64[ns]
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]

也可以这样做:

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
dtype: datetime64[ns]
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]

我们如何推断年份?它只是一个常数吗?是的,它是君士坦丁堡我们怎么推断年份?它只是一个常数吗?是的,它是常数。我没有想到答案。使用to_datetime的参数是干净的+我没有想到答案。使用to_datetime的参数是干净的+1.