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

使用Pandas从日期类型数据中提取日期值

提取日期字符串中的YYYY-MM-DD部分

问题描述

现有如下格式的数据集:

time                            ID  
2021-04-16T00:00:00.000-0800    AA
2021-04-23T00:00:00.000-0800    AA
2021-04-30T00:00:00.000-0800    BB

需要将time列转换为仅保留YYYY-MM-DD格式的日期值,最终得到如下结果:

time        ID  
2021-04-16  AA
2021-04-23  AA
2021-04-30  BB

当前使用的代码df["time"] = df["time"].str.extract(r'(\w+)')无法得到正确结果——正则\w+仅匹配连续的字母、数字和下划线,无法包含日期中的连字符-,只会提取出2021这部分,不符合需求。

改进方案

方案1:字符串切片(最简单高效)

目标日期部分固定为字符串的前10个字符,直接通过切片截取:

df["time"] = df["time"].str[:10]

方案2:修正正则表达式

使用精准正则匹配开头的YYYY-MM-DD格式:

df["time"] = df["time"].str.extract(r'^(\d{4}-\d{2}-\d{2})')[0]

这里^(\d{4}-\d{2}-\d{2})表示从字符串开头匹配「4位数字+连字符+2位数字+连字符+2位数字」的格式,确保准确提取日期部分。

方案3:转换为datetime类型后处理(推荐,若数据为日期类型)

如果time列已经是datetime类型(或可转换为该类型),直接利用pandas的datetime属性提取日期:

# 先转换为datetime类型(若还未转换)
df["time"] = pd.to_datetime(df["time"])
# 提取日期并转为字符串格式
df["time"] = df["time"].dt.strftime('%Y-%m-%d')
# 若不需要字符串格式,也可直接保留date对象
# df["time"] = df["time"].dt.date

内容的提问来源于stack exchange,提问作者Lynn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:25:22