为什么要从熊猫中删除日期时间?

tar*_*lay 16 python datetime pandas

我在 Pandas 中处理大量数据分析并每天使用 pandas.datetime。最近我收到警告“FutureWarning:不推荐使用 pandas.datetime 类,并将在未来版本中从 Pandas 中删除。改为从 datetime 模块导入。” 我之前使用过 datetime lib,当 datetime 无法使用时,我想这样做,并且我知道它是一个与“日期”更相关的库,但是有人知道这种转向 datetime 库背后的想法吗?

Bra*_*mon 22

总结:(datetime来自 Python 标准库)从来没有真正成为 Pandas 或其 API 的一部分,开发人员现在正在齐心协力警告这一点。您可以datetime直接访问该类:

from datetime import datetime
Run Code Online (Sandbox Code Playgroud)

详细信息:旧版本的 Pandas(例如:0.20)包含:

from datetime import datetime
Run Code Online (Sandbox Code Playgroud)

pandas/__init__.py

这意味着,如果您真的愿意,可以引用和使用pd.datetime,这实际上只是标准库的日期时间类。

Per Pandas issue #30610issue #30296pandas.datetime真的只是标准的datetime.datetime。它看起来像是弃用它们(有趣的是,这是通过在模块级别覆盖__getattr__完成的*),这样做是为了阻止将其他 3rd 方库/模块带入顶级 Pandas 命名空间的“迂回使用”。

也就是说,Pandas 库不考虑datetime(或numpy)在该命名空间中可用作为其 API 的一部分,因此您首先不应该依赖它。


*具体来说,这看起来像:

# pandas/__init__.py
    def __getattr__(name):
        import warnings
        elif name == "datetime":
            warnings.warn(...)
            from datetime import datetime as dt
            return dt
Run Code Online (Sandbox Code Playgroud)

  • 那么,我需要在过去的代码中进行更改的地方只有(a)“from datetime import datetime”和(b)用“datetime”替换“pd.datetime”? (2认同)