0

从 excel 文件中读取日期时出现 Pandas 错误。我正在使用以下命令创建数据框。

df = pd.read_excel("report_file.xls", parse_dates=['operation_date'])
df.dtypes
operation_date  datetime64[ns]

一切看起来都很好。但是在分析数据框时,发现了一个错误。天数与月数匹配后,pandas 搞错了,将日期和月份颠倒过来。例如,10 月份的数据看起来像这样。

45 2021-10-13 11:50:34  ...                       329.97
46 2021-10-13 11:41:56  ...                       323.50
47 2021-10-13 11:41:55  ...                      2600.00
48 2021-10-10 02:05:13  ...                      1479.45
49 2021-09-10 20:22:01  ...                        40.00
50 2021-09-10 19:39:39  ...                        42.64
51 2021-09-10 19:39:39  ...                       350.00
52 2021-06-10 20:11:48  ...                        20.00
53 2021-06-10 13:34:25  ...                         1.96

您可以在月份的位置看到 2021-10-10 天数之后。

4

2 回答 2

0

尝试显式传递日期格式,如下所示:

pd.read_excel(
    "report_file.xls",
    parse_dates=['operation_date'],
    date_parser=lambda x: pd.to_datetime(x, format='%Y-%m-%d %I:%M:%S')
)
于 2021-10-30T09:40:24.820 回答
0

我用了另一种方式。在我的 Excel 文件 ( report_file.xls) 中,我的表格中有一个包含名称operation_date和日期的列,日期为 dmY。

我的桌子

起初我从文件中制作了一个数据框:

df = pd.read_excel('report_file.xls')
df.dtypes   # operation_date   object

然后我将日期从字符串转换为日期时间:

df['operation_date'] = pd.to_datetime(df['operation_date'],dayfirst=True)
df.dtypes   #  operation_date      datetime64[ns]

在这种情况下,我描述的 2021-10-10 之后的日期没有问题。这是代码:

df = pd.read_excel("report_file.xls", parse_dates=['operation_date'])
45 2021-10-13 11:50:34  ...                       329.97
46 2021-10-13 11:41:56  ...                       323.50
47 2021-10-13 11:41:55  ...                      2600.00
48 2021-10-10 02:05:13  ...                      1479.45
49 2021-10-09 20:22:01  ...                        40.00
50 2021-10-09 19:39:39  ...                        42.64
51 2021-10-09 19:39:39  ...                       350.00
52 2021-10-06 20:11:48  ...                        20.00
53 2021-10-06 13:34:25  ...                         1.96

现在日期看起来是正确的。

于 2021-10-30T18:14:11.670 回答