Excel二进制日期字段转换为numpy int64

9lowa7mx  于 11个月前  发布在  其他
关注(0)|答案(3)|浏览(78)

我有一个二进制Excel文件,其中日期列的值为“7/31/2020”。
在阅读文件时,DATE值被转换为numpy.int64,值为44043。
你能告诉我如何停止这种转换或获取Excel中给出的日期吗?
这是我读取excel文件的代码

>>df = pd.read_excel('hello.xlsb', engine='pyxlsb')
>>df[DATE][0]
>>44043

字符串

zpqajqem

zpqajqem1#

显然,整数值是自1900年1月0日以来的天数,但1月0日并不存在:这里似乎涉及了一个捏造因子2

>>> import datetime
>>> d = datetime.date(1900, 1, 1) + datetime.timedelta(days=44043 - 2)
>>> d
datetime.date(2020, 7, 31)
>>> d.isoformat()
'2020-07-31'
>>> d.strftime("%m/%d/%Y")
'07/31/2020'

字符串
查看strftime文档了解其他格式选项。

dz6r00yl

dz6r00yl2#

您可以尝试在阅读时将列解析为日期格式:

df = pd.read_excel('hello.xlsb', engine='pyxlsb', parse_dates=[DATE])

字符串
DATE是变量,其列名应采用日期格式。

nlejzf6q

nlejzf6q3#

通过修改this answer,您可以使用以下代码片段:

import pandas as pd
df = pd.read_excel(filename_xlsb, engine="pyxlsb")
df["date"] = pd.to_datetime(df["xldate"], unit="D", origin="1899-12-30")

字符串
注意,你不能将parse_date=参数传递给pd.read_excel,否则相关列将得到object dtype,pd.to_datetime将失败。

相关问题