我已经读取了一个 .xlsb 文件,并使用下面的代码解析了日期列:
dateparser = lambda x: pd.to_datetime(x)
data = pd.read_excel(r"test.xlsb", engine="pyxlsb",
parse_dates=["start_date","end_date"],
date_parser=dateparser
)
我的.xlsb文件中的输入列格式为 DD/MM/YYYY (例如:26/01/2008)。通过上述代码的输出,我得到了例如1970-01-01 00:00:00.000038840。只有最后5位数字发生变化。
如果我在不解析日期的情况下读取同一文件,则相同的列是float64类型,并且仅包含先前输出的最后5位数字(例如,38840.0)。
我认为这是与日期编码本身有关的问题。是否有人知道如何解决此问题?
pyxlsb
是这样运作的。我经常遇到这样的情况,我事先不知道表格中的某一列应该是日期格式,而pyxlsb
将其读取为浮点数意味着必须依赖于列名实际上包含“date”或其他标识符。其他Excel引擎没有这个问题。 - bsplosion