📅  最后修改于: 2023-12-03 15:33:24.119000             🧑  作者: Mango
在实际的数据处理中,经常需要从 datetime
对象中删除时间信息,只保留日期信息。pandas
提供了方便的方式来完成这个任务。
datetime
对象中提取日期信息我们可以使用 pandas
的 date
属性来仅仅获取 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)
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
表达式是一种匿名函数的定义方式,比较适合简单的函数定义。
上面介绍了通过 pandas
从 datetime
对象中删除时间信息的两种方式,即使用 date
属性和 apply()
函数。在实际的数据处理中,具体使用哪种方式取决于具体的需求。