如何使用python为日期字段中的每个日期添加0到23小时作为后缀

Posted

技术标签:

【中文标题】如何使用python为日期字段中的每个日期添加0到23小时作为后缀【英文标题】:How to add 0 to 23 hours as suffix to each date in a datefield using python 【发布时间】:2021-04-16 16:16:42 【问题描述】:

我正在尝试为日期时间字段中的每个日期添加 0 到 23 小时,有人可以帮我实现这一目标吗?

我在网上搜索,但找不到正确的答案

预期输入和输出的附加图像,提前致谢。

【问题讨论】:

相关:***.com/a/46218695/10197418 【参考方案1】:

假设您将这些日期作为 pandas df 的索引,您将转换为日期时间并使用小时作为频率。然后您可以strftime 到所需的输出格式。例如:

import pandas as pd

df = pd.DataFrame(index=pd.to_datetime(['01/11/2020', '02/11/2020', '03/11/2020'], dayfirst=True))

new_dti = df.asfreq('H').index

new_dti.strftime('%d/%m/%Y %H:%M')

Index(['01/11/2020 00:00', '01/11/2020 01:00', '01/11/2020 02:00',
       '01/11/2020 03:00', '01/11/2020 04:00', '01/11/2020 05:00',
       '01/11/2020 06:00', '01/11/2020 07:00', '01/11/2020 08:00',
       ...
       '02/11/2020 15:00', '02/11/2020 16:00', '02/11/2020 17:00',
       '02/11/2020 18:00', '02/11/2020 19:00', '02/11/2020 20:00',
       '02/11/2020 21:00', '02/11/2020 22:00', '02/11/2020 23:00',
       '03/11/2020 00:00'],
      dtype='object')

【讨论】:

【参考方案2】:

使用简单的for loop 很容易实现:

from datetime import datetime, date

dates = [date(2020,11,1), date(2020,11,2)]

for dt in dates:
    for hour in range(0, 24):
        result.append(datetime(dt.year, dt.month, dt.day, hour, 0))

print(result)
>>>
[datetime.datetime(2020, 11, 1, 0, 0),
 datetime.datetime(2020, 11, 1, 1, 0),
 datetime.datetime(2020, 11, 1, 2, 0),
 datetime.datetime(2020, 11, 1, 3, 0),
...
...
...
 datetime.datetime(2020, 11, 2, 22, 0),
 datetime.datetime(2020, 11, 2, 23, 0)]

【讨论】:

以上是关于如何使用python为日期字段中的每个日期添加0到23小时作为后缀的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期字段中的输入数据限制为仅限于某些字符?

将 csv 文件中的日期字段读取到数据框中

Grafana 将时区差异添加到日期

将日期列添加到python中的附加输出csv文件

C#中如何判断一个DateTime类型字段的日期为空?

如何将 100 年添加到 Advantage 数据库中的日期