Pandas 日期和时间数据类型
学习 Pandas 中用于日期和时间的数据类型。
日期和时间数据类型
我们可以用三种主要形式来表示日期和时间:
- 特定的日期或时间(例如:
2021-12-10,2021-11-25 14:59:00) - 固定的时间间隔(例如:
小时、周、月) - 持续时长(例如:
3周、4小时30分钟)

Pandas 库提供了多种函数和方法,能够高效且便捷地处理这些不同的时间形式。正确使用合适的日期与时间数据类型非常重要,否则我们将无法使用 Pandas 提供的日期和时间相关功能。
datetime64[ns] 数据类型可用于表示日期和时间值。具有 datetime64[ns] 类型的数据被称为 Timestamp(时间戳)。一个 Timestamp 同时包含日期和时间信息。我们可以使用 to_datetime 构造器将表示日期的字符串转换为时间戳。
1import pandas as pd 2 3mydate = pd.to_datetime("2021-11-10") 4 5print(mydate)
由于该字符串仅包含日期部分,因此生成的时间戳中时间部分为零。
另一种常用于日期和时间操作的数据类型是 timedelta64[ns],它用于表示两个 datetime 对象之间的时间差。
1import pandas as pd 2 3first_date = pd.to_datetime("2021-10-10") 4second_date = pd.to_datetime("2021-10-02") 5 6diff = first_date - second_date 7 8print(diff)
时间差以天数计算。Timedelta 对象具有一个 days 属性,可返回整数形式的天数。
1import pandas as pd 2 3first_date = pd.to_datetime("2021-10-10") 4second_date = pd.to_datetime("2021-10-02") 5 6diff = first_date - second_date 7 8print(type(diff)) 9print("\n") 10print(diff.days)
我们之前使用的 staff 数据集中包含两列日期信息:date_of_birth(出生日期)和 start_date(入职日期)。但这两列当前是以 object 类型存储的。为了对它们执行日期相关的操作,我们需要将其数据类型进行转换,这可以通过 astype 函数实现。
1import pandas as pd 2 3staff = pd.read_csv("staff.csv") 4 5staff = staff.astype({ 6 "date_of_birth": "datetime64[ns]", 7 "start_date": "datetime64[ns]", 8}) 9 10print(staff.dtypes)
我们已经介绍了两种用于日期和时间的基本数据类型。在进行日期处理任务时,正确使用这些数据类型对于充分发挥 Pandas 的功能至关重要。