4

我已经阅读了一个 .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)。

我认为这是与日期编码本身相关的问题。有谁知道如何解决这个问题?

4

1 回答 1

6

我不确定你是否能够找出这个问题的答案。但是,以下是我解决它的方法:

from pyxlsb import convert_date

self.data: pd.DataFrame = pd.read_excel(self.file, sheet_name=self.sheet, engine='pyxlsb', header=0)
self.data["test"] = self.data.apply(lambda x: convert_date(x.SomeStupidDate), axis=1)

可以在此处找到更多详细信息:https ://pypi.org/project/pyxlsb/通过对“convert_date”执行 ctrl+F。

于 2020-05-29T01:13:53.067 回答