简体   繁体   English

将不同的日期格式转换为一种格式时出现值错误

[英]Value error when converting different date formats to one single format

Hello I have a date column on my dataset which looks like this您好,我的数据集上有一个日期列,如下所示

import pandas as pd 

# initialize list of lists 
data = [['2020-11-05 00:00:00'], ['4/24/20'],['5/26/19'], ['2019-08-12 00:00:00']] 

# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['date']) 

# print dataframe. 
df

Now I want to convert all the date format to on single format of dd-mm-yyyy , which I have tried with this code现在我想将所有日期格式转换为dd-mm-yyyy 的单一格式,我已经尝试使用此代码

df['date']= df['date'].astype(str)

import datetime

def guess_date(string):
    for fmt in ["%m/%d/%Y", "%d-%m-%Y", "%Y-%m-%d"]:
        try:
            return datetime.datetime.strptime(string, fmt).date()
        except ValueError:
            continue
    raise ValueError(string)

for sample in df['date']:
    d = guess_date(sample)
    print(d.strftime("%d-%m-%y"))

I get this error when I try to run it ValueError: 2020-11-05 00:00:00 .当我尝试运行它时出现此错误ValueError: 2020-11-05 00:00:00 Kindly anyone to help on this?请有人帮忙吗?

I expect all date formats to be one as dd-mm-yyyy我希望所有日期格式都是dd-mm-yyyy

You should add two formats more in formats array.您应该在格式数组中添加两种格式。 The changed code is as follows.修改后的代码如下。

import pandas as pd
import datetime

data = [['2020-11-05 00:00:00'], ['4/24/20'],['5/26/19'], ['2019-08-12 00:00:00']]
df = pd.DataFrame(data, columns = ['date']) 
df['date']= df['date'].astype(str)

print(df)

def guess_date(string):
    # added "%m/%d/%y" and "%Y-%m-%d %H:%M:%S"
    for fmt in ["%m/%d/%Y", "%m/%d/%y", "%d-%m-%Y", "%Y-%m-%d", "%Y-%m-%d %H:%M:%S"]:  
        try:
            return datetime.datetime.strptime(string, fmt).date()
        except ValueError:
            continue
    raise ValueError(string)

for sample in df['date']:
    d = guess_date(sample)
    print(d.strftime("%d-%m-%y"))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM