python - 获取两个日期时间变量之间的小时列表
问题描述
我有一个看起来像这样的数据框:
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
...
老实说,我不知道从哪里开始,我找到了一些可能提供基础的文章,但我不确定如何使我的查询适应下面的代码,因为我想要基于行和小时值的计数.
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"))
https://www.w3resource.com/python-exercises/date-time-exercise/python-date-time-exercise-50.php
解决方案
然后让我们创建日期时间的范围,使用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
推荐阅读
- sql - 使用子查询和联接的 SQL 查询性能
- excel - VBA,格式化/未知问题导致 vba 无法工作
- dataset - 用于物体检测和分类的 kitti 数据集 3D 激光雷达点云数据
- mysql - 在 Rails 中使用英语模型和西班牙语数据库
- python - Python:根据位置、括号和括号从列表中获取每个元素
- javascript - 我可以使用中继更新器配置来更新简单的 graphQL 列表吗?
- ios - iPhoneX上的奇屏动画恢复应用
- c++ - 读取目录中的多个文件进行编辑和写入另一组文件
- arrays - 如何在 GoLang 中将项目附加到 []os.FileInfo
- javascript - 覆盖 BehaviorSubject 中的值会创建越来越大的条目