为何使用Pandas datetime转换日期格式无效?
问题原因及解决办法
核心原因
- 格式参数不匹配:你的源数据日期格式是
YYYY-MM-DD-hh-mm-ss,但代码里指定的format='%Y/%m/%d'是斜杠分隔的纯日期格式,和源数据完全不匹配。pd.to_datetime遇到格式不匹配时会自动尝试解析,但这不会帮你去除时分秒部分。 - datetime类型不存储显示格式:pd.to_datetime返回的是
datetime64类型的Series,这类数据只存储时间戳信息,不存储显示格式。你看到的输出格式只是pandas的默认展示方式,并非数据本身的格式。
解决步骤
方式一:保留datetime类型,仅提取日期部分
如果后续还要做日期运算,建议保留datetime类型,只提取日期部分:
# 原格式是标准ISO格式,可直接解析,无需指定format temp2 = pd.to_datetime(temp1) # 提取纯日期(无时分秒) temp_date_only = temp2.dt.date
方式二:转换为指定格式的字符串
如果需要字符串形式的YYYY-MM-DD日期,使用dt.strftime方法:
temp2 = pd.to_datetime(temp1) # 转换为目标格式的字符串 temp_str_date = temp2.dt.strftime('%Y-%m-%d')
另外,temp1和temp2都是Series是正常现象——pd.to_datetime处理Series输入时,返回的就是同结构的Series,类型本身没有问题,问题出在格式解析和后续的格式转换环节。
内容的提问来源于stack exchange,提问作者MaybeMaybeNot
相关产品推荐
相关产品推荐

