📜  pandas 从 datetime 中删除时间 - Python (1)

📅  最后修改于: 2023-12-03 15:33:24.119000             🧑  作者: Mango

Pandas 从 datetime 中删除时间 - Python

在实际的数据处理中,经常需要从 datetime 对象中删除时间信息,只保留日期信息。pandas 提供了方便的方式来完成这个任务。

1. 从 datetime 对象中提取日期信息

我们可以使用 pandasdate 属性来仅仅获取 datetime 对象中的日期信息。下面的代码演示了如何用 date 属性获取日期信息:

import pandas as pd

# 创建一个包含时间信息的 Series
s = pd.Series(pd.date_range('20220101 09:10:11', periods=6, freq='D'))
print(s)

# 提取日期信息
s_date = s.dt.date
print(s_date)

上面的代码中,我们创建了一个包含时间信息的 Series,然后使用 dt 属性来操作其中的时间信息。s.dt.date 返回一个新的 Series,其中仅保留了日期信息,如下所示:

0   2022-01-01
1   2022-01-02
2   2022-01-03
3   2022-01-04
4   2022-01-05
5   2022-01-06
dtype: datetime64[ns]

0    2022-01-01
1    2022-01-02
2    2022-01-03
3    2022-01-04
4    2022-01-05
5    2022-01-06
dtype: object

上面的代码中,s.dt.date 返回的是一个 object 类型的数据。如果需要将其转换成 datetime64[ns] 类型,可以使用 pd.to_datetime() 函数:

s_date = pd.to_datetime(s.dt.date)
2. 使用 apply() 函数从 datetime 对象中删除时间信息

除了使用 date 属性,还可以使用 apply() 函数来实现从 datetime 对象中删除时间信息的任务。下面的代码演示了如何用 apply() 函数获取日期信息:

import pandas as pd

# 创建一个包含时间信息的 Series
s = pd.Series(pd.date_range('20220101 09:10:11', periods=6, freq='D'))
print(s)

# 使用 apply 函数提取日期信息
s_date = s.apply(lambda x: pd.Timestamp.date(x))
print(s_date)

上面的代码中,我们使用 apply() 函数,对于每个 datetime 对象,将其转换成 date 对象。转换的方式是将 datetime 对象转换成 timestamp 对象,然后再调用 date 属性,最后使用 pd.Timestamp.date() 函数将 timestamp 对象转换成 date 对象。

值得注意的是,在上面的代码中,我们使用了 lambda 表达式。lambda 表达式是一种匿名函数的定义方式,比较适合简单的函数定义。

3. 总结

上面介绍了通过 pandasdatetime 对象中删除时间信息的两种方式,即使用 date 属性和 apply() 函数。在实际的数据处理中,具体使用哪种方式取决于具体的需求。