熊猫 - 从read_excel转换十进制日期



我已经在csv中使用熊猫转换了一些excel文件。我注意到日期现在是十进制格式。但是,我不清楚如何转换为datetime或至少时间戳。

因此,转换后的日期如下所示:

42794.741667

我知道小数点之前是 1900 年的日子,但我没有找到关于十进制数第二部分的任何内容。很多问题建议直接从read_excel转换:熊猫自动转换日期。但是,我不能这样做,因为 excel 文件非常复杂并且没有预定义的结构。

Excel 日期

不是 1970 年的天数,而是 1899 年 12 月 30 日的日期。(您可能会想到 Posix 时间戳,即从 1970 年 1 月 1 日开始的秒数)。

Excel 将第 1 天报告为 1900 年 1 月 1 日

(这意味着纪元为 1899 年 12 月 31 日),但 Excel 也认为 1900 年是闰年,但事实并非如此,因此 Excel 的计数在 1900 年 1 月 1 日至 1900 年 2 月 28 日之间的日期相差 1。

这种行为是故意的。在早期,Excel 与市场领导者 Lotus 1-2-3 竞争,后者也认为 1900 年是闰年,当人们开始关心它时,它被认为破坏性太大而无法修复。

您可以将Excel日期转换为pandas可以理解的Python datetime

>>> import datetime
>>> datetime.datetime(1899,12,30) + datetime.timedelta(days=42794.741667)
datetime.datetime(2017, 2, 28, 17, 48, 0, 28800)

如果将 42794.741667 粘贴到空的 Excel 电子表格中并将其格式化为日期,则可以确认转换。

相关内容

  • 没有找到相关文章