我有一个二进制Excel文件,其中日期列的值为“7/31/2020”。在阅读文件时,DATE值被转换为numpy.int64,值为44043。你能告诉我如何停止这种转换或获取Excel中给出的日期吗?这是我读取excel文件的代码
>>df = pd.read_excel('hello.xlsb', engine='pyxlsb') >>df[DATE][0] >>44043
字符串
zpqajqem1#
显然,整数值是自1900年1月0日以来的天数,但1月0日并不存在:这里似乎涉及了一个捏造因子2。
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文档了解其他格式选项。
dz6r00yl2#
您可以尝试在阅读时将列解析为日期格式:
df = pd.read_excel('hello.xlsb', engine='pyxlsb', parse_dates=[DATE])
字符串DATE是变量,其列名应采用日期格式。
DATE
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将失败。
parse_date=
pd.read_excel
object
pd.to_datetime
3条答案
按热度按时间zpqajqem1#
显然,整数值是自1900年1月0日以来的天数,但1月0日并不存在:这里似乎涉及了一个捏造因子
2
。字符串
查看strftime文档了解其他格式选项。
dz6r00yl2#
您可以尝试在阅读时将列解析为日期格式:
字符串
DATE
是变量,其列名应采用日期格式。nlejzf6q3#
通过修改this answer,您可以使用以下代码片段:
字符串
注意,你不能将
parse_date=
参数传递给pd.read_excel
,否则相关列将得到object
dtype,pd.to_datetime
将失败。