【问题标题】:Convert 6 digits date format to standard one in Pandas在 Pandas 中将 6 位日期格式转换为标准格式
【发布时间】:2019-12-04 07:09:14
【问题描述】:

我正在使用的数据框有一个乱七八糟的date 列,格式不规则,即:

          date
0      19.01.01
1      19.02.01
2   1991/01/01
3   1996-01-01
4   1996-06-30
5   1995-12-31
6   1997-01-01

是否可以将其转换为标准格式XXXX-XX-XX,代表year-month-date?谢谢。

          date
0   2019-01-01
1   2019-02-01
2   1991-01-01
3   1996-01-01
4   1996-06-30
5   1995-12-31
6   1997-01-01

【问题讨论】:

    标签: python-3.x pandas datetime


    【解决方案1】:

    pd.to_datetimeyearfirst=True 一起使用

    例如:

    df = pd.DataFrame({"date": ['19.01.01', '19.02.01', '1991/01/01', '1996-01-01', '1996-06-30', '1995-12-31', '1997-01-01']})
    df['date'] = pd.to_datetime(df['date'], yearfirst=True).dt.strftime("%Y-%m-%d")
    print(df)
    

    输出:

             date
    0  2019-01-01
    1  2019-02-01
    2  1991-01-01
    3  1996-01-01
    4  1996-06-30
    5  1995-12-31
    6  1997-01-01
    

    【讨论】:

      【解决方案2】:

      取决于格式,最通用的解决方案是指定每种格式并使用Series.combine_first

      date1 = pd.to_datetime(df['date'], format='%y.%m.%d', errors='coerce')
      date2 = pd.to_datetime(df['date'], format='%Y/%m/%d', errors='coerce')
      date3 = pd.to_datetime(df['date'], format='%Y-%m-%d', errors='coerce')
      
      df['date'] = date1.combine_first(date2).combine_first(date3)
      print (df)
      
              date
      0 2019-01-01
      1 2019-02-01
      2 1991-01-01
      3 1996-01-01
      4 1996-06-30
      5 1995-12-31
      6 1997-01-01
      

      【讨论】:

        【解决方案3】:

        试试下面的

         df['date'].replace('\/|.','-', regex=True)
        

        【讨论】:

        • 你能解释一下这部分('. | /\')吗?
        • 它将查找并替换“/”或“.”带“-”
        【解决方案4】:

        使用 pd.to_datetime()

        pd.to_datetime(df['date])
        

        输出:

        0   2001-01-19
        1   2001-02-19
        2   1991-01-01
        3   1996-01-01
        4   1996-06-30
        5   1995-12-31
        6   1997-01-01
        Name: 0, dtype: datetime64[ns]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-28
          • 1970-01-01
          • 2017-12-20
          • 1970-01-01
          • 1970-01-01
          • 2014-08-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多