使用Pandas Series dt.date在Python中从DateTime对象中提取日期

2025年1月5日 | 阅读 4 分钟

引言

在处理和操作日期时间数据方面,这通常是最关键的领域之一。Python,一种多功能的数据分析语言,拥有许多可以精确处理日期时间数据的库。其中一个著名的库就是 Pandas 库,它是一个用于数据和分析的实用包。在 Pandas 的 datetime 模块中,您可以找到许多方便的函数来帮助您更有效地处理日期和时间。其中一个突出的功能是 `dt.date` 访问器,它不仅简单,而且足够灵活,可以从 DateTime 对象中提取日期。在本教程中,我们将重点介绍一个特定的通用场景。

理解 Pandas Series 和 DateTime 对象

为了继续深入探讨提取日期的高级部分,我们首先从学习 Pandas Series 的基础知识以及 DateTime 对象开始。Pandas Series 是标准 Python 一维列表的替代品,它具有带标签的变量,无论其数量和数据类型如何。DateTime 对象与 `timedelta` 对象(处理时间间隔)不同,它们以方便快捷的方式处理日期和时间。

Pandas Series `dt.date` 访问器

Pandas 中的 `dt.date` 访问器简化了从 Pandas Series 中唯一的 DateTime 对象提取日期的过程。使用此函数,可以从 DateTime 序列中的每个对象获取日期,然后可以使用这些日期进行操作和基于日期的分析。

语法

使用 `dt.date` 访问器的语法非常简单

针对包含 datetime 类型值的 Pandas Series 'pandas_series'。

实际示例

以下是一些场景,可以帮助您在实际环境中掌握 `dt.date` 函数。

示例 1:从 DataFrame 列中提取。

让我们考虑一个 DataFrame,其中有一列输入为 DateTime 对象。通过使用 `dt.date` 访问器,我们可以自动简化从该列中提取日期。

代码

输出

datetime_column date_column
0 2024-03-17 08:30:00  2024-03-17
1 2024-03-18 09:45:00  2024-03-18
2 2024-03-19 10:15:00  2024-03-19

说明

  • 首先,通过导入 Pandas 库(别名为 pd)。
  • 在此示例中,我使用了一个 DataFrame 作为样本,其中包含一个名为 'datetime_column' 的单列,该列包含表示 datetime 值的字符串。
  • 使用 to_datetime() 函数将 'datetime_column' 转换为 Pandas DateTime 对象。
  • 应用 date 访问器以从 datetime_column 中的每个 DateTime 项获取日期部分。
  • 'date_column' 是给定列的名称,而 'date_column' 现在包含提取出的日期。
  • 打印原始的 'datetime_column' 以及包含从 DateTime 对象中提取出的日期信息的 'date_column'。

示例 2:使用数据过滤日期

代码

输出

2024-03-18 09:45:00   2024-03-18

说明

  • 创建一个名为 specific_date 的新变量,该变量将保存目标日期。使用 to_datetime('2024-03-18') 将日期转换为 DateTime 对象,然后应用 '.date()' 来仅提取日期组件。
  • 通过使用 'df['date_column'] == specific_date' 来过滤 df DataFrame,条件是 'date_column' 中的值等于 'specific_date'。此操作会生成一个布尔掩码,其中 True 值表示满足条件的行,False 值表示不满足条件的行。通过对 DataFrame 进行索引来过滤数据。
  • 将过滤后的 DataFrame 存储在名为 filtered_data 的新变量中。
  • 打印 'filtered_data',它仅包含 'date_column' 等于 '2024-03-18' 的行。

示例 3:执行日期计算。

`dt.date` 访问器可以轻松地进行日期算术。我们可以使用此方法即时执行日期计算,例如加法和减法。

代码

输出

datetime_column date_column    next_day
0 2024-03-17 08:30:00  2024-03-17  2024-03-18
1 2024-03-18 09:45:00  2024-03-18  2024-03-19
2 2024-03-19 10:15:00  2024-03-19  2024-03-20

说明

  • 在名为 'next_day' 的新列中,创建变量 df_next,其值将比当前日期增加一天。
  • 使用 '+' 运算符将字符串 'pd.Timedelta(days=1)' 添加到 'date_column'pd.Timedelta(days=1) 表示一天或特定的时间长度。
  • 为了将结果日期存储在新列中,该 Series 被命名为 'next_day'。
  • 打印 DataFrame 'df' 以显示三列:'datetime_column'、'date_column' 和 'next_day',其中 'next_day' 是在原始 'datetime_column' 和 'date_column' 的日期基础上加一天的新列。

结论

在本综合指南中,我们已经涵盖了 Pandas Series dt.date 访问器的各种用途。在编码实践中,我们已经学会了如何无误地从 DateTime 对象中提取日期信息、根据目标日期范围对数据进行排序以及轻松执行日期算术。掌握这些步骤可以简化数据分析师和科学家的日期相关操作,从而带来更有效和更具洞察力的数据分析例程。尽管处理日期和时间的数据操作通常会让人望而生畏,但 Pandas 及其处理时序数据的完整工具集可以消除这种负担。