python - Pandas 中的日期时间转换问题

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

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

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 对象?

最佳答案

使用 Pandas 方法进行 datetime 操作

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

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,就很少需要这样做了。

关于python - Pandas 中的日期时间转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54041762/

相关文章:

python - 在 Python 中为 Tkinter Treeview 创建弹出菜单

python - "Think Python"提取 URL 的练习

python - 如何设置动态创建的类的模块名称?

python - 根据条件删除 pandas 数据框的行

python - 使用 zipfile 在 python 中执行 mysql 查询

python - scipy 稀疏矩阵中每一行或列的 Argmax

python - 属性错误: 'NoneType' object has no attribute 'split' while execute pelican-quickstart

python - 使用 python 将文本发送到带有逗号分隔符的列

python - 根据 pandas 的组合两列选择具有最低值的行

python argparse文件扩展名检查