【问题标题】:Pandas to_datetime: Unknown string formatPandas to_datetime:未知的字符串格式
【发布时间】:2019-03-01 02:54:39
【问题描述】:

数据框中的“日期”列是这样的:

19 Mar. 2017
12 Mar. 2017
08 Mar. 2017
05 Mar. 2017
26 Feb. 2017
19 Feb. 2017
12 Feb. 2017
05 Feb. 2017
29 Jan. 2017
22 Jan. 2017
15 Jan. 2017
08 Jan. 2017
01 Jan. 2017
25 Dec. 2016
18 Dec. 2016
11 Dec. 2016
04 Dec. 2016
27 Nov. 2016
20 Nov. 2016

当我尝试做的时候:

df = df[pd.to_datetime(df['Date']).dt.year==2016]

它抱怨:

ValueError: 未知的字符串格式

我认为它无法识别日期字符串格式。

知道怎么解决吗?

【问题讨论】:

    标签: python python-3.x pandas datetime series


    【解决方案1】:

    通过to_datetime中的参数format使用自定义format

    df['Date'] = pd.to_datetime(df['Date'], format='%d %b. %Y')
    df = df[df['Date'].dt.year==2016]
    print (df)
             Date
    13 2016-12-25
    14 2016-12-18
    15 2016-12-11
    16 2016-12-04
    17 2016-11-27
    18 2016-11-20
    

    【讨论】:

    • “日期”列有两种格式:2016 年 11 月 27 日和 2018 年 5 月 28 日
    【解决方案2】:

    您可以为非标准格式指定 formatpd.to_datetime,例如pd.to_datetime(my_series, format='%d %b. %Y')。然后使用pd.Series.dt.year。这是推荐的方法。另见Python's strftime directives

    但是,如果您只是转换为 datetime 以按年份过滤而不更改系列的 dtype,则只需查询最后 4 个字符:

    df[df['dates'].str[-4:] == '2016']
    

    【讨论】:

      猜你喜欢
      • 2016-04-03
      • 2018-02-13
      • 2018-10-06
      • 2021-04-16
      • 2023-02-10
      • 2019-05-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      相关资源
      最近更新 更多