【问题标题】:Problem with datetime conversion in PandasPandas 中的日期时间转换问题
【发布时间】:2019-05-31 04:36:34
【问题描述】:

这是我的问题的重现示例:

df = pd.DataFrame(["2018-01-13 17:25:54+0100",
    "2018-01-13 07:23:36+0100",
    "2018-01-13 08:15:48+0100"], columns=["date"])

print(type(datetime.strptime(df["date"][1], '%Y-%m-%d %H:%M:%S%z')))

print(type(pd.Series(df["date"].apply(lambda s: datetime.strptime(s, '%Y-%m-%d %H:%M:%S%z')))[1]))

输出是:

类'datetime.datetime'

类'pandas._libs.tslibs.timestamps.Timestamp'

如何使用 apply 函数(或类似函数)获取 datetime.datetime 对象?

【问题讨论】:

  • pd.to_datetime(df.date) 将帮助您获取 datetime64。这相当于你的大熊猫 datetime.datetime 你可以做几乎相同的操作

标签: python python-3.x pandas datetime python-datetime


【解决方案1】:

使用 Pandas 方法进行 datetime 操作

一般来说,避免在处理 Pandas 数据帧时,标准库中的 datetime 模块。您应该想要使用矢量化操作,并且应该依靠 Pandas 方法来利用基于 NumPy 的矢量化:

df['date'] = pd.to_datetime(df['date'])

print(df['date'].dtype)
# datetime64[ns]

但如果你坚持...

如果您希望导出到 datetime.datetime 值的数组以在 Pandas 之外使用,您可以使用 to_pydatetime

py_date = df['date'].dt.to_pydatetime()
# array([datetime.datetime(2018, 1, 13, 16, 25, 54),
#        datetime.datetime(2018, 1, 13, 6, 23, 36),
#        datetime.datetime(2018, 1, 13, 7, 15, 48)], dtype=object)

但是,一旦您使用了 Pandas,就很少需要这样做了。

【讨论】:

    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2012-12-30
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多