You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python中带时间的字符串日期转换为仅日期格式(去除时间部分)

如何将Python中带时间的字符串日期转换为仅日期格式(去除时间部分)

嘿,我来帮你搞定这个日期转换的问题!我看你已经尝试了几种方法,但还没得到想要的纯日期结果,咱们一步步来理清楚:

首先,你用pd.to_datetime(activity['date time'])得到的是带00:00:00时间的datetime类型,这是因为pandas会把完整的时间字符串转成datetime对象,默认保留时间维度。如果想要去掉时间部分,有几个简单的办法:

方法一:用Pandas的dt属性提取纯日期

这是最适合Pandas数据集的方案,分两步走:

  1. 先把字符串列转成datetime类型(这一步你已经做对了)
  2. 用dt.date提取纯日期对象,或者用dt.strftime()转成你想要的字符串格式

示例代码:

# 第一步:转换为datetime类型
activity['datetime_col'] = pd.to_datetime(activity['date time'])

# 提取datetime.date类型的纯日期
activity['date_only'] = activity['datetime_col'].dt.date

# 如果需要字符串格式的日期(比如"2021-05-20")
activity['date_str'] = activity['datetime_col'].dt.strftime('%Y-%m-%d')

方法二:直接字符串分割(适合格式固定的情况)

因为你的日期字符串格式是固定的,T是日期和时间的分隔符,所以可以直接分割字符串取前半部分:

activity['date_str'] = activity['date time'].str.split('T').str[0]

这个方法不需要转成datetime类型,适合只需要字符串结果且格式不会变动的场景。

关于你尝试的datetime.strptime的问题

你之前用datetime.strptime(activity['date time'], '%Y-%m-%d')会报错,是因为strptime要求格式字符串和输入的完整字符串完全匹配。你的输入字符串包含T和时间部分,所以得先用完整的格式解析,再提取日期:

from datetime import datetime

# 先按完整格式解析字符串
activity['datetime_col'] = activity['date time'].apply(lambda x: datetime.strptime(x, '%Y-%m-%dT%H:%M:%S.%f'))

# 再提取纯日期
activity['date_only'] = activity['datetime_col'].apply(lambda x: x.date())

这样处理后,就能得到你想要的不带时间的日期啦!

备注:内容来源于stack exchange,提问作者Donut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:09:10