如何在Pandas中去除Datetime的时分秒,仅保留日期
处理带时区/时分秒的日期字符串,提取纯日期
问题原因
你用pd.to_datetime(..., format="%Y-%m-%d")没生效,是因为原字符串包含时区、时分秒等额外信息,pandas发现格式不匹配时会自动 fallback 到完整解析逻辑,所以最终结果还是保留了时间和时区部分。
实用解决方法
方法1:先解析完整时间,再提取日期
先让pandas正确解析带时区的完整时间,再通过dt属性提取纯日期:
import pandas as pd # 示例数据 raw_dates = ["2023-10-05 23:57:10+00:00", "2023-10-06 12:34:56+08:00"] df = pd.DataFrame({"raw_date": raw_dates}) # 第一步:解析完整时间(不用指定format,pandas会自动识别时区) df["full_datetime"] = pd.to_datetime(df["raw_date"]) # 提取为Python原生date对象(无时间、时区) df["pure_date"] = df["full_datetime"].dt.date # 或者保留pandas datetime类型,但时间设为00:00:00(时区会保留,但时间部分清零) df["datetime_date_only"] = df["full_datetime"].dt.normalize() # 转成字符串格式的纯日期 df["date_str"] = df["full_datetime"].dt.strftime("%Y-%m-%d")
方法2:直接截取日期部分再转换
如果原字符串的日期部分是固定的前10位(比如YYYY-MM-DD格式),可以直接截断字符串再转,跳过时间和时区解析:
df["pure_date"] = pd.to_datetime(df["raw_date"].str[:10])
这种方法得到的是pandas的datetime类型,仅包含日期,没有时分秒和时区。
内容的提问来源于stack exchange,提问作者dsilva
相关产品推荐
相关产品推荐

