python - 如何获取 pandas datetime64 列和 1582 年 10 月 14 日(公历)之间的时间增量(以秒为单位)?

标签 python datetime pandas spss

我正在尝试将 pandas 数据帧转换为 SPSS 格式,但在转换 datetime64 变量时遇到问题。

使用以下代码:

import pandas as pd

import datetime as dt

df['date1'] =  (df['date'] - pd.Timestamp('1582-10-15 00:00')).astype('timedelta64[s]')

df['date1'] = (df['date'] - dt.datetime(1582, 10, 15)).astype('timedelta64[s]')

我收到 Out of bounds nanosecond timestamp: 1582-10-15 00:00:00 错误。

当我只是为了好玩而尝试使用 1982 时,它起作用了!

我知道很难找到从 1582 年到 1970 年的纪元和 UTC 时间等,但是有没有简单的方法? 非常感谢!

最佳答案

我相信 Timestamp 在这么久以前的日期中断,因为没有记录如何处理各种闰秒以及一路上没有处理的内容。所以你得到的错误是打破了最精确的时间。这就说得通了。意思是这么久以前的日期不可能那么精确。

解决方案

改用 dt.datetime。它不需要那么高的精度。

import pandas as pd

import datetime as dt

epoch = dt.datetime(1582, 10, 15)
date = dt.datetime(2016, 3, 31)

int((date - epoch).total_seconds())

关于python - 如何获取 pandas datetime64 列和 1582 年 10 月 14 日(公历)之间的时间增量(以秒为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37352870/

相关文章:

python - 如何遍历给定目录中的文件?

date - BigQuery 自动检测日期格式失败

mysql - 如何在 MySQL 中排除周末和节假日日期并查找预期日期?

python - 使用 pandas 将列从一个 DataFrame 复制到另一个 DataFrame 的最快方法?

python - pymongo 默认数据库连接

python - Matplotlib - 固定 x 轴刻度和自动缩放 y 轴

mysql - 选择开始日期和此开始日期后的特定天数之间的记录

python - pandas 结合线图和点图

python - 修改pandas数据框中的csv数据

python - 导入 geopandas 时出错 OSError : Could not find lib c or load any of its variants []