【问题标题】:Isues with date format in pandas熊猫日期格式的问题
【发布时间】:2021-05-06 09:44:35
【问题描述】:

我正在处理一个包含美国 M-D-Y 格式日期的数据集。

当我将数据集加载到 Pandas 数据框中并将列类型更改为日期格式时,日期会变得混乱。

示例:在数据集中,第一个日期写为 (11/04/2015),这意味着 2015 年 4 月 11 日。但是当我转换为 DateTime 并使用按日期对数据框进行排序时,第一个日期是 ( 01/08/2015)这是不正确的。如何将列更改为 DateTime 而不会出现这种情况?

数据集示例:

IDX_CUSTOMER_ITEM_CODE  IDX_COMPANY QtySold TotalOnHand Date
0   131 1   3   26  11/04/2015
1   134 1   3   17  11/04/2015
2   137 1   3   114 11/04/2015
3   140 1   3   18  11/04/2015
4   179 1   1   21  11/04/2015
... ... ... ... ... ...
1048570 1059    10  0   23  04/03/2017
1048571 1075    10  3   14  04/03/2017
1048572 2135    10  2   4   04/03/2017
1048573 1035    10  2   3   04/03/2017
1048574 1038    10  0   5   04/03/2017

第一个日期是 2015 年 4 月 11 日,最后一个日期是 2017 年 3 月 4 日。

当我这样做时:

transactions['Date'] = pd.to_datetime(transactions['Date'])

最早的日期变为 2015 年 1 月 8 日,最晚的日期为 2016 年 12 月 31 日,这是不正确的。好累:

transactions['Date'] = pd.to_datetime(transactions['Date'], format = '%dd-%mm-%yy')

得到以下错误:

time data '11/04/2015' does not match format '%dd-%mm-%yy' (match)

【问题讨论】:

  • 您需要展示“您如何转换为 DateTime”以便我们提供帮助。可重现的数据集和代码会更好。

标签: python pandas date


【解决方案1】:

也可以使用dayfirst参数:

pd.to_datetime(df['Date'], dayfirst=True)

输出:

0   2015-04-11
1   2015-04-11
2   2015-04-11
3   2015-04-11
4   2015-04-11
5   2017-03-04
6   2017-03-04
7   2017-03-04
8   2017-03-04
9   2017-03-04

【讨论】:

    【解决方案2】:

    你的格式不对。 %代码的含义可以参考Python strftime reference

    transactions['Date'] = pd.to_datetime(transactions['Date'], format = '%d/%m/%Y')
    
    print(transactions['Date'])
    
    0   2015-04-11
    1   2015-04-11
    2   2015-04-11
    3   2015-04-11
    4   2015-04-11
    5   2017-03-04
    6   2017-03-04
    7   2017-03-04
    8   2017-03-04
    9   2017-03-04
    Name: Date, dtype: datetime64[ns]
    

    【讨论】:

    • @YussufAbdirizak 我添加了一个示例输出。我认为 第一个日期是 2015 年 4 月 11 日和最后一个 2017 年 3 月 4 日 是一样的。 transactions['Date'] = pd.to_datetime(transactions['Date']) 似乎无法正确区分月份和日期。使用format 明确地告诉它。
    • @YussufAbdirizak 您的要求似乎有冲突。 包含美国 M-D-Y 格式的日期2015 年 11 月 4 日 -> 2015 年 4 月 11 日 不同。
    • 谢谢。我通过 format 告诉 DateTime 什么是实际日期格式(m-d-y)来修复它,现在一切都很好
    猜你喜欢
    • 2021-02-17
    • 2018-09-01
    • 1970-01-01
    • 2019-11-28
    • 2019-09-12
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多