如何去除DataFrame中日期时间的小数毫秒部分统一格式?
统一DataFrame日期时间格式的三种实用方法
针对你遇到的部分日期带毫秒、部分不带的情况,给你三种简单可行的解决办法:
方法一:转为datetime类型后格式化(最稳妥)
先利用pandas的pd.to_datetime自动解析两种格式,转成标准的datetime对象,再用strftime指定输出格式,直接去掉毫秒部分:import pandas as pd # 假设日期列名为'datetime_col',DataFrame为df df['datetime_col'] = pd.to_datetime(df['datetime_col']).dt.strftime('%Y-%m-%d %H:%M:%S')这个方法能兼容各种合法的日期字符串格式,不用担心格式异常问题。
方法二:字符串直接切片(最快)
如果你能确定所有日期字符串的前19位都是YYYY-MM-DD HH:MM:SS格式,直接截取前19个字符即可:df['datetime_col'] = df['datetime_col'].str[:19]操作简单高效,但要确保所有数据的字符串长度都足够,避免出现截取不全的问题。
方法三:正则表达式替换(最灵活)
用正则匹配小数点后的毫秒部分,直接替换为空字符串,不管毫秒有几位都能处理:df['datetime_col'] = df['datetime_col'].str.replace(r'\.\d+', '', regex=True)适合毫秒位数不固定的场景,比如有的是3位、有的是6位的情况。
内容的提问来源于stack exchange,提问作者BENJAMÍN IBÁÑEZ
相关产品推荐
相关产品推荐

