首页 > 解决方案 > 熊猫:日期时间从日期开始不正确地选择日期作为月份

问题描述

我正在处理数据框中的一些日期时间数据。格式为日/月/年 例如:

Date
----------------
27/06/2021 00:00
27/06/2021 00:00
30/06/2021 00:00
30/06/2021 00:00
30/06/2021 00:00
18/06/2021 00:00
26/06/2021 00:00
28/06/2021 00:00
28/06/2021 00:00
27/06/2021 00:00
28/06/2021 00:00
30/06/2021 00:00
12/06/2021 00:00
28/06/2021 00:00

我想提取月份和年份,所以我使用将列转换为日期时间data['date'] = pd.to_datetime(data['date'])

但是,这会导致对月份和日期的分类不正确。当上面的日期转换为日期时间时,它们最终会变成:

Date
-----------
2021-06-27
2021-06-27
2021-06-30
2021-06-30
2021-06-30
2021-06-18
2021-06-26
2021-06-28
2021-06-28
2021-06-27
2021-06-28
2021-06-30
2021-12-06
2021-06-28

所有这些日期都应该以 06 为月份。但是第 13 行错误地将 12 分配为月份,这导致我稍后使用 groupby 时结果不正确。有没有办法解决这个问题?

标签: pythonpandasdatetime

解决方案


采用

pd.to_datetime(data['date'], dayfirst=True)

因为这一天显然在您的数据中排在第一位,但熊猫默认假定月份排在第一位。

docs - “ dayfirst : bool, 默认 False

注意:第一天/最后一天的评估并不严格,即逐行评估 - 这就是为什么你得到如此混合的结果但没有错误的原因。


推荐阅读