我已经在csv中使用熊猫转换了一些excel文件。我注意到日期现在是十进制格式。但是,我不清楚如何转换为datetime
或至少时间戳。
因此,转换后的日期如下所示:
42794.741667
我知道小数点之前是 1900 年的日子,但我没有找到关于十进制数第二部分的任何内容。很多问题建议直接从read_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 电子表格中并将其格式化为日期,则可以确认转换。