Python-将2月29日日期转换为日期时间对象

Python-将2月29日日期转换为日期时间对象,python,pandas,Python,Pandas,我需要将字符串格式的日期转换为日期时间对象,但2月29日的日期总是出现值错误。这是我的密码 from datetime import datetime def try_parsing_date(text): for fmt in ('%Y-%m-%d', '%d.%m.%Y', '%m/%d/%Y', '%d/%m/%Y', '%d-%b-%y', '%d/%m/%y', '%m/%d/%y', '%m/%d/%Y'): try: return

我需要将字符串格式的日期转换为日期时间对象,但2月29日的日期总是出现值错误。这是我的密码

from datetime import datetime

def try_parsing_date(text):
    for fmt in ('%Y-%m-%d', '%d.%m.%Y', '%m/%d/%Y', '%d/%m/%Y', '%d-%b-%y', '%d/%m/%y', '%m/%d/%y', '%m/%d/%Y'):
        try:
            return datetime.strptime(text, fmt)
        except ValueError:
            pass
    raise ValueError(text)

df['Dateofbirth'] = df.apply(lambda row: try_parsing_date(row['Dateofbirth']), axis=1)
我得到的错误是ValueError:('2/29/57','发生在索引82445')


解决此问题的最佳方法是什么?

这不是Python的问题。1957年不是一次飞跃,57年2月29日也不存在。如果有人声称这是他的出生日期,那他是在撒谎。因此,您也可以在列表中输入任何日期-或nan。

我获得的错误消息更具体、更有用:

from datetime import datetime
datetime.strptime('1957-02-29', '%Y-%m-%d')

ValueError: day is out of range for month

顺便说一句,有很多关于历史的误导性网站告诉我们“57年2月29日发生了什么?”

没有1957年2月29日。你有垃圾输入。您可以捕获
ValueError
,并将给定年份的2月29日调整为2月28日或3月1日。