如何处理 Pandas 中格式不统一的含毫秒/微秒时间字符串转换

云辰大大_1792

云辰大大_1792

2026-07-17

474人浏览

原创

如何处理 Pandas 中格式不统一的含毫秒/微秒时间字符串转换

当 DataFrame 时间列中部分值含不一致的小数秒(如 .5、.000 或无小数部分)时,直接指定固定 format 会报错;推荐使用 format='mixed' 自动推断,或预处理统一补零后再转换。

当 dataframe 时间列中部分值含不一致的小数秒(如 `.5`、`.000` 或无小数部分)时,直接指定固定 `format` 会报错;推荐使用 `format='mixed'` 自动推断,或预处理统一补零后再转换。

在实际数据清洗中,时间字符串格式不一致是常见痛点——例如 'Jan 20, 2000 12:00:00'、 'Jan 20, 2000 12:00:00.5' 和 'Jan 20, 2000 12:00:01' 混合存在时,pd.to_datetime() 若硬编码 format='%b %d %Y %H:%M:%S' 会因 .5 报 ValueError;而用 '%b %d %Y %H:%M:%S.%f' 又因缺失小数部分失败。

✅ 推荐方案一:使用 format='mixed'(Pandas ≥ 2.0)
该参数启用智能格式推断,自动适配每行的时间格式,简洁高效:

import pandas as pd

df = pd.DataFrame({'datetime': [
    'Jan 20, 2000 12:00:00', 
    'Jan 20, 2000 12:00:00.5', 
    'Jan 20, 2000 12:00:01'
]})

df['datetime'] = pd.to_datetime(df['datetime'], format='mixed')
print(df.dtypes)  # datetime64[ns]
print(df['datetime'].dt.strftime('%b %d, %Y %H:%M:%S.%f')[:3])

输出示例:

0    Jan 20, 2000 12:00:00.000000
1    Jan 20, 2000 12:00:00.500000
2    Jan 20, 2000 12:00:01.000000

⚠️ 注意事项:format='mixed' 虽便捷,但对高度异构或模糊格式(如 01/02/03)可能产生歧义解析。生产环境建议优先采用预处理标准化策略。

Pandas Linux版 2.3.3
Pandas Linux版 2.3.3

Pandas 2.3.3 历史版本下载,来自 PyPI 官方发布,适合旧项目兼容、数据分析脚本复现和指定环境安装。

下载

✅ 推荐方案二:正则预处理 + 固定格式转换
显式补全小数秒(如将无小数部分的字符串补 .0),确保所有值符合统一格式:

# 为不含小数点的时间字符串追加 '.0'
mask = ~df['datetime'].str.contains(r'\.\d+$', regex=True)
df.loc[mask, 'datetime'] = df.loc[mask, 'datetime'] + '.0'

# 统一按含微秒格式解析
df['datetime'] = pd.to_datetime(df['datetime'], format='%b %d, %Y %H:%M:%S.%f')

? 进阶提示:

  • 若需更高精度控制(如仅支持 .1–.9 单位毫秒),可用 df['datetime'].str.replace(r'(\.\d)$', r'\100000', regex=True) 补齐六位微秒;
  • 对超大数据集,format='mixed' 性能略低于固定格式,可权衡速度与鲁棒性;
  • 始终通过 df['datetime'].isna().sum() 检查解析失败项,并结合 errors='coerce' 容错(但需警惕静默错误)。

综上,format='mixed' 是快速解决格式混杂问题的首选,而标准化预处理更适合对数据质量要求严苛的场景——二者结合使用,可兼顾开发效率与生产健壮性。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Python 时间序列分析与预测
Python 时间序列分析与预测

本专题专注讲解 Python 在时间序列数据处理与预测建模中的实战技巧,涵盖时间索引处理、周期性与趋势分解、平稳性检测、ARIMA/SARIMA 模型构建、预测误差评估,以及基于实际业务场景的时间序列项目实操,帮助学习者掌握从数据预处理到模型预测的完整时序分析能力。

2025.12.04

300

15

Python 数据清洗与预处理实战
Python 数据清洗与预处理实战

本专题系统讲解 Python 在数据清洗与预处理中的核心技术,包括使用 Pandas 进行缺失值处理、异常值检测、数据格式化、特征工程与数据转换,结合 NumPy 高效处理大规模数据。通过实战案例,帮助学习者掌握 如何处理混乱、不完整数据,为后续数据分析与机器学习模型训练打下坚实基础。

2026.01.31

212

21

Python数据分析与Pandas高级实战
Python数据分析与Pandas高级实战

本专题围绕 Python 数据分析展开,系统讲解 Pandas 的高级用法,包括数据清洗、透视表、时间序列分析以及多表合并与分组操作。通过实战案例,帮助开发者掌握高效处理与分析数据的方法,提高数据处理效率与分析能力。

2026.04.13

331

25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1558

5

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

2264

5

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

2023.10.24

5784

49

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2023.11.24

4909

6

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

2024.03.22

6614

16

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

2024.04.29

8934

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Pandas 官方文档与用户指南
Pandas 官方文档与用户指南

共0课时 | 0人学习

Pandas 教程
Pandas 教程

共15课时 | 1.8万人学习