在 Python 中,任何与日期和时间有关的事情都由 datetime 模块处理,它将模块进一步分为 5 个不同的类。类只是与对象相对应的数据类型。下图总结了 Python 中的 5 个日期时间类以及常用的属性和示例。
3个有用的片段
1.将字符串转换为日期时间格式 ,也许是使用datetime 最常见的情况。
由于日期和时间的字母数字性质,将类似的日期和时间解析为 Python 通常会被解释为字符串。在本节中,我们将介绍如何将字符串列表解析为日期时间格式,以及如何将日期和时间数据拆分和组合到数据框中的各个列中。
片段 1 的打印输出
但是,如果日期时间以不寻常或模棱两可的方式格式化怎么办?一个常见的问题是美国和欧洲的日期时间书写方式之间的区别。在美式格式中,月份在前,而在欧洲样式中,日期在前。
默认情况下,pandas 中的 to_datetime 通过将前一个少于 12 位 (<12) 的数字解析为月份来将对象转换为日期时间。例如,2/11/2021 将被解析为 2021-02-11,但 13/11/2021 将被解析为 2021-11-13。但是,有这个格式参数允许您以其他方式定义格式。
或者, strftime() 方法有助于在返回字符串之前格式化日期时间。在以下示例中,原始日期时间之间的破折号 (-) 替换为反斜杠 (/),数字月份 (02) 替换为缩写的英语术语 (Feb)。
由于有多种方法可以解释日期(日、月、年)和时间(时、分、秒),因此了解不同的格式代码至关重要。下表是常用格式代码的备忘单。
2.使用时区
没有时区信息的 datetime 对象被称为“naive”,有时区信息的对象(通常在末尾带有 +HH:MM 对应 GMT)被认为是“aware”。pytz 可能是 Python 中最全面的库之一,它简化了时区计算的任务。以下代码段将向您展示如何在“naive”和“aware” datetime 对象之间进行转换,并可以使用不同的时区。代码的最后一部分还演示了如何将给定的日期时间对象转换为本地时区。此示例显示了日本和德国的时区代码,对于其他地区,您可以在此处参考。
片段2的输出
3.使用interval比较两个datetime(s)
有时我们必须有条件地比较两个日期时间。想象一下,您有两个数据框,第一个数据框仅包含一列日期时间,第二个数据框包含两列表示间隔和其余列中的其他信息。您的目标是从第一个数据帧中找到匹配的日期时间,如果它落在第二个数据帧的间隔内,如果是,则复制其他列。
实现此目的的一种方法是使用 pd.Interval 压缩两个日期时间的间隔,然后将它们分配为数据框的索引,稍后可用于有条件地比较和映射日期时间。如果满足时间条件,这可以通过使用 for 循环复制感兴趣的列来完成。
原文:https://towardsdatascience.com/how-to-work-with-datetime-in-python-26d4092dc484