Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.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 获取两个Datetime变量之间的小时数列表_Python_Pandas - Fatal编程技术网

Python 获取两个Datetime变量之间的小时数列表

Python 获取两个Datetime变量之间的小时数列表,python,pandas,Python,Pandas,我有一个如下所示的数据帧: Date Name Provider Task StartDateTime LastDateTime 2020-01-01 00:00:00 Bob PEM ED A 7a-4p 2020-01-01 07:00:00 2020-01-01 16:00:00 2020-01-02 00:00:00 Tom PEM ED C 10p-2a 2020-01-02 22:00:00

我有一个如下所示的数据帧:

Date               Name  Provider     Task      StartDateTime       LastDateTime
2020-01-01 00:00:00 Bob     PEM   ED A 7a-4p    2020-01-01 07:00:00 2020-01-01 16:00:00
2020-01-02 00:00:00 Tom     PEM   ED C 10p-2a   2020-01-02 22:00:00 2020-01-03 02:00:00
我想列出每个人的
StartDateTime
LastDateTime
(datetime64[ns])之间的小时数,然后创建一个更新的数据框以反映所述列表。例如,更新后的数据帧如下所示:

Name    Date         Hour
Bob     2020-01-01    7
Bob     2020-01-01    8
Bob     2020-01-01    9
...
Tom     2020-01-02    22
Tom     2020-01-02    23
Tom     2020-01-03    0
Tom     2020-01-03    1
...
我确实不知道从哪里开始,我发现了一些可以提供基础的文章,但是我不知道如何将查询调整到下面的代码,因为我希望基于行和小时值来计算。p>
def daterange(date1, date2):
    for n in range(int ((date2 - date1).days)+1):
        yield date1 + timedelta(n)

start_dt = date(2015, 12, 20)
end_dt = date(2016, 1, 11)
for dt in daterange(start_dt, end_dt):
    print(dt.strftime("%Y-%m-%d"))

让我们创建datetime的范围,然后使用
explode

df['Date']=[pd.date_range(x,y , freq='H') for x , y in zip(df.StartDateTime,df.LastDateTime)]
s=df[['Date','Name']].explode('Date').reset_index(drop=True)
s['Hour']=s.Date.dt.hour
s['Date']=s.Date.dt.date
s.head()
         Date Name  Hour
0  2020-01-01  Bob     7
1  2020-01-01  Bob     8
2  2020-01-01  Bob     9
3  2020-01-01  Bob    10
4  2020-01-01  Bob    11

这看起来很好,有两件事1)出现错误'AttributeError:'DataFrame'对象没有属性'explode',2)我是Python新手,请您对代码进行注释。阅读关于explode的文章@Raven explode是pandas 0.25.0之后的新版本,如果您使用旧版本,请update@Raven同样对于explode@Raven about zip,这是否回答了您的问题?