为什么 pandas.to_datetime 对于非标准时间格式(例如“2014/12/31”)很慢

2024-05-15

我有一个这种格式的 .csv 文件

timestmp, p
2014/12/31 00:31:01:9200, 0.7
2014/12/31 00:31:12:1700, 1.9
...

当通过阅读时pd.read_csv并将时间字符串转换为日期时间使用pd.to_datetime,性能急剧下降。这是一个最小的例子。

import re
import pandas as pd

d = '2014-12-12 01:02:03.0030'
c = re.sub('-', '/', d)

%timeit pd.to_datetime(d)
%timeit pd.to_datetime(c)
%timeit pd.to_datetime(c, format="%Y/%m/%d %H:%M:%S.%f")

表演是:

10000 loops, best of 3: 62.4 µs per loop
10000 loops, best of 3: 181 µs per loop
10000 loops, best of 3: 82.9 µs per loop

那么,我怎样才能提高性能pd.to_datetime从 csv 文件读取日期时?


这是因为 pandas 回落到dateutil.parser.parse用于在字符串具有非默认格式或没有时解析字符串format提供字符串(这更灵活,但也更慢)。

如上所示,您可以通过提供format字符串到to_datetime。或者另一种选择是使用infer_datetime_format=True


显然,infer_datetime_format无法推断何时存在微秒。通过没有这些的示例,您可以看到很大的加速:

In [28]: d = '2014-12-24 01:02:03'

In [29]: c = re.sub('-', '/', d)

In [30]: s_c = pd.Series([c]*10000)

In [31]: %timeit pd.to_datetime(s_c)
1 loops, best of 3: 1.14 s per loop

In [32]: %timeit pd.to_datetime(s_c, infer_datetime_format=True)
10 loops, best of 3: 105 ms per loop

In [33]: %timeit pd.to_datetime(s_c, format="%Y/%m/%d %H:%M:%S")
10 loops, best of 3: 99.5 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 pandas.to_datetime 对于非标准时间格式(例如“2014/12/31”)很慢 的相关文章

随机推荐

  • 如何在 SQLite 中替换字符串?

    如何更新具有以下内容的表列 var mobile 233KKFSDK3234 Documents Page jpg 并将其替换为 Documents Page jpg 在 SQLite 中 注意 所有文字 除了 Documents 是动态的
  • GWT 是否重用 Google Closure Compiler,如果不重用,为什么?

    谷歌网络工具包 GWT http code google com webtoolkit 执行 javascript 代码的内联 缩小和删除未使用的代码 以及其他一些优化 这些也是由谷歌闭包编译器 http code google com c
  • 来自java的kotlin函数默认参数

    给出以下 Kotlin 类 class Foo public fun bar i Int 0 Int 2 i 我应该如何在没有 java groovy 代码中的任何参数的情况下调用 bar 函数 def f new Foo f bar th
  • 如何将 Twitter 小部件嵌入到 Reactjs 中?

    前往 Twitter 小部件网站 https publish twitter com https publish twitter com 我可以获得一个小部件添加到我的网站 我正在使用示例代码来尝试了解它的工作原理 a class twit
  • 如何在 ASP.Net MVC 中执行 301 永久重定向路由

    如何在 ASP NET MVC 中执行 HTTP 301 永久重定向路由 创建一个继承自 ActionResult 的类 public class PermanentRedirectResult ActionResult public st
  • 将命令行参数传递给子进程并对它们进行计数

    我希望父进程将参数传递给 main 并通过以 argv 1 开头的管道一次将其中的字符发送到子进程 然后继续处理其余参数 一次调用 write对于每个字符 我希望子进程计算父进程发送给它的字符数 并打印出从父进程接收到的字符数 子进程不应以
  • 如何将整个 GDB 会话转储到文件中,包括我输入的命令及其输出?

    在 bash 中 我可以使用script命令 它将 shell 上显示的所有内容转储到文件中 包括 键入的命令 PS1 line 命令的 stdout 和 stderr gdb 中的等效项是什么 我试着跑shell script从 GDB
  • For...VBA 中的下一个循环超出限制

    我正在使用一个For Next循环填充数组 如下所示 ReDim array 1 to 100 1 to 100 For i 1 to 100 Next i But the i计数器似乎总是转到 101 而不是停止在 100 因此 这会在我
  • Rails 注释分段错误

    有一些问题围绕着这个问题 但没有什么真正能满足我的需求 After I bundle install下面列出了我的 Gemfile 我运行annotate并出现以下错误 Users nickcoelius rvm gems ruby 1 8
  • 在浏览器中查看 javascript 事件

    我正在使用火狐浏览器 有没有什么东西可以向我显示实时触发的所有 JavaScript 事件 您可以右键单击其中的元素Firebug http getfirebug com的 HTML 选项卡并单击日志事件 然后 您将在 控制台 选项卡中看到
  • Safari 中的 javascript 页面刷新

    我正在尝试弄清楚如何使用 javascript 刷新 Safari 5 1 中的页面 但似乎没有任何效果 到目前为止 我已经尝试过 窗口 位置 href 窗口 位置 href 窗口位置 窗口位置 href window location r
  • 没有导出的成员/节点模块

    我刚刚开始使用 5 分钟快速入门找到的 Angular 2 Typescripthere https angular io docs ts latest quickstart html 我遇到了一个看起来很常见的问题 但可能有点不同 我遇到
  • 触发“对等方重置连接”

    我想测试当发生 对等方重置连接 错误时我们的应用程序 嵌入式 ftp 服务器 中发生的日志记录 这个帖子 https stackoverflow com questions 1434451 connection reset by peer很
  • 多行 C# 正则表达式在空行后匹配

    我正在寻找一个多行正则表达式 它将匹配空行后出现的情况 例如 给定下面的示例电子邮件 我想匹配 发件人 Alex From s 可以匹配任何 From 行 但我希望它仅限于正文中的行 第一个空白行之后的任何行 Received from a
  • python 插入与追加

    我编写了基本的 python 代码片段 首先将值插入列表中 然后反转它们 我发现插入和追加方法之间的执行速度存在巨大差异 片段 1 L for i in range 10 5 L append i L reverse 执行此操作所需的时间
  • Springfox - 如果不在控制器中使用 POJO,是否可以通过注释记录 POJO

    正如标题所说 如果 POJO 未在控制器方法中使用 是否可以在 swagger 文档中包含 POJO 我尝试在 POJO 类上使用 ApiModel 注释 即 ApiModel POJO public class Pojo 但是 除非 PO
  • redis 2.8.7 Linux Sentinel环境配置问题,如何使其自启动,应该订阅什么?

    现在我们尝试使用 redis 2 8 7 作为缓存存储 来自使用 booksleeve 客户端的 NET Web 应用程序 目前看来这是一个非常有趣和令人兴奋的任务 redis 文档非常好 但由于缺乏真正的实践经验 我确实有几个关于如何正确
  • 在 JDeveloper 中创建应用程序服务器连接时出错

    背景 我使用安装了 SOA 的 Oracle JDeveloper Studio 作为我的 IDE 在 JDeveloper 中 我想创建到远程 Weblogic 服务器的连接 The remote服务器运行在我的本地计算机上 我将其称为远
  • 将表行从 Word 文档复制到现有文档表特定单元格

    我正在寻找一个宏 它将内容从一个 Word 文档中的表格复制到另一个现有 Word 文档中的表格到特定单元格中 从第 5 行开始 复制后面的所有行并将其粘贴到现有文档中的第 5 行 这可能吗 在此输入图像描述 https i stack i
  • 为什么 pandas.to_datetime 对于非标准时间格式(例如“2014/12/31”)很慢

    我有一个这种格式的 csv 文件 timestmp p 2014 12 31 00 31 01 9200 0 7 2014 12 31 00 31 12 1700 1 9 当通过阅读时pd read csv并将时间字符串转换为日期时间使用p