代码之家  ›  专栏  ›  技术社区  ›  chitown88

python:使用混合格式将列从字符串转换为datetime

  •  0
  • chitown88  · 技术社区  · 6 年前

    我已经多次在列中将字符串转换为日期时间。但是,在每个实例中,字符串格式都是一致的。现在我有一个混合格式的数据帧要更改。下面的示例,但这贯穿了100000行。

    index    date    
    0        30 Jan 2018
    1        January 30 2018
    

    我可以单独转换每种类型,但是有没有办法用混合格式轻松地将df['date']转换为datetime?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sruthi    6 年前

    这是一种使用 datetime.strptime

    from datetime import datetime
    
    def IsNumber(s):
        try: 
            int(s)
            return True
        except ValueError:
            return False
    
    def ConvertToDatetime(date):
        date=date.split(" ") #split by space
        if(IsNumber(date[0])): #is of the form dd month year
            if(len(date[1])==3): #if month is for form Jan,Feb...
                datetime_object = datetime.strptime(" ".join(date), '%d %b %Y')
            else: #if month is for form January ,February ...
                datetime_object = datetime.strptime(" ".join(date), '%d %B %Y')
        else:  #is of the form month date year
            if(len(date[0])==3): #if month is for form Jan,Feb...
                datetime_object = datetime.strptime(" ".join(date), '%b %d %Y')
            else: #if month is for form January ,February ...
                datetime_object = datetime.strptime(" ".join(date), '%B %d %Y')
        return datetime_object
    

    您可以根据文档和格式添加更多案例 你的问题中的两个例子是:

    ConvertToDatetime("30 Jan 2018")
    2018-01-30 00:00:00
    ConvertToDatetime("January 30 2018")
    2018-01-30 00:00:00