Python excel中的日期转换为文本,反之亦然
我看到excel用特定的序列号标识日期。例如:Python excel中的日期转换为文本,反之亦然,python,excel,pandas,datetime,python-datetime,Python,Excel,Pandas,Datetime,Python Datetime,我看到excel用特定的序列号标识日期。例如: 09/07/2018 = 43290 10/07/2018 = 43291 我知道我们使用DATEVALUE、VALUE和TEXT函数在这些类型之间进行转换 但这种转换背后的逻辑是什么?为什么43290用于09/07/2018? 另外,如果我在数据框架(Python)中有一个数字格式的日期列表,如何将该数字转换为日期格式? 与时间类似,我看到十进制值代替常规时间格式。这些时间转换背后的逻辑是什么 评论中给出的以下问题提供了信息,但
09/07/2018 = 43290
10/07/2018 = 43291
我知道我们使用DATEVALUE
、VALUE
和TEXT
函数在这些类型之间进行转换
但这种转换背后的逻辑是什么?为什么43290
用于09/07/2018
?
另外,如果我在数据框架(Python)中有一个数字格式的日期列表,如何将该数字转换为日期格式?
与时间类似,我看到十进制值代替常规时间格式。这些时间转换背后的逻辑是什么
评论中给出的以下问题提供了信息,但没有回答我关于日期和文本格式转换背后的逻辑的问题:
这只是自1900年1月1日以来的天数(或天数的分数,如果谈论日期和时间):
DATEVALUE函数将存储为文本的日期转换为
Excel识别为日期的序列号。例如
公式=DATEVALUE(“1/1/2008”)返回
日期:2008年1月1日。但请记住,您的计算机的系统日期
设置可能会导致DATEVALUE函数的结果从
这个例子
…
Excel将日期存储为连续序列号,以便在计算中使用。默认情况下,1900年1月1日是序列号1,2008年1月1日是序列号39448,因为它是1900年1月1日之后的39447天
从
如果我在数据框中有数字格式的这些日期列表
(Python),如何将此数字转换为日期格式
由于我们知道该数字表示自1900年1月1日起的天数,因此可以轻松地将其转换为日期:
from datetime import datetime, timedelta
day_number = 43290
print(datetime(1900, 1, 1) + timedelta(days=day_number - 2))
# 2018-07-09 00:00:00 ^ subtracting 2 because 1/1/1900 is
# "day 1", not "day 0"
但是,pd.read\u excel
应该能够自动处理此问题。是的。这差不多就是总结。实际上,这些数据存在于xlsb文件中。由于没有名为read_xlsb的函数,我编写了一个函数来读取它。但结果是,不知怎的,这个日期被转换成了数字格式,所以读取excel不会有帮助。不过,您的解决方案目前似乎运行良好。时间呢?例如,0.516550926
指的是12:23:50
。如何执行此转换?这背后的逻辑是什么?