Pandas多格式时间字符串处理:去毫秒转统一datetime格式
解决Pandas多格式日期转换与去毫秒问题
你的核心问题是原日期字符串格式不统一,再加上代码里的变量名错误,导致转换失败。直接用pd.to_datetime就能自动识别你提到的三种格式,再配合时间取整就能去掉毫秒,同时保留datetime类型方便排序。
正确步骤与代码:
统一转为datetime类型并去除毫秒
用pd.to_datetime自动解析所有格式,再用dt.floor('S')把时间截断到秒(直接去掉毫秒部分),结果依然是datetime类型,完全满足排序需求:import pandas as pd # 假设你的DataFrame是df,目标列是'A列' df['A列'] = pd.to_datetime(df['A列']).dt.floor('S')如果需要转为字符串格式(可选)
要是你同时需要%Y-%m-%d %H:%M:%S格式的字符串,可以在转成datetime后再格式化,但注意这样会变成字符串类型,后续若要排序得重新转回datetime:# 先转datetime去毫秒,再转成指定格式的字符串 df['A列_字符串格式'] = pd.to_datetime(df['A列']).dt.floor('S').dt.strftime('%Y-%m-%d %H:%M:%S')
你的原代码问题分析:
- 变量名大小写混乱:
Df和df混用,导致程序找不到对应DataFrame - 第二个代码用
datetime.strptime指定单一格式,无法处理三种不同的日期字符串,必然报错 - 第一个代码直接用
strftime把datetime转成字符串,后续没法直接排序,违背了第二个目标
内容的提问来源于stack exchange,提问作者FarahR
相关产品推荐
相关产品推荐

