gpt4 book ai didi

Python:将字符串中的多个日期格式更改为日期时间格式

转载 作者:行者123 更新时间:2023-12-01 23:38:31 24 4
gpt4 key购买 nike

我正在尝试将字符串格式的不同日期转换为日期时间格式。我在“status_change_date”列中有大约 1,000,000 行日期。问题是有很多不同的格式,我不知道它们都是什么格式。

所以,我正在我的 jupyter note 上尝试这个功能:

def parsing_date(date_string):
for date_format in ("%d/%m/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S%p", "%d/%m/%Y %H:%M:%S%p", "%-m/%-d/%Y %H:%M:%S", "%-d/%-m/%Y %H:%M:%S", "%-m/%-d/%Y %H:%M:%S%p", "%-d/%-m/%Y %H:%M:%S%p"):
try:
return datetime.strptime(date_string, date_format)
except ValueError:
raise
print(date_string)
raise ValueError('Something is wrong')

那么,

data['status_chage_date'].apply(parsing_date)

我正在打印错误,这样我就可以在我的函数中一一考虑,直到不再有错误为止。但是,我遇到了此错误消息:

ValueError: time data '17/10/2019 05:49:51' does not match format '%m/%d/%Y %H:%M:%S'

strptime() argument 1 must be str, not None

我以为我覆盖了函数中的格式,第二个错误很奇怪,因为我排除了没有值的行。

我做错了什么,有更好的方法吗?

最佳答案

请注意,当发生错误时您会提出!您需要先测试所有可能性:

import pandas as pd 

def parsing_date(date_string):
d = None
for date_format in ("%d/%m/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S", "%m/%d/%Y %H:%M:%S%p", "%d/%m/%Y %H:%M:%S%p", "%-m/%-d/%Y %H:%M:%S", "%-d/%-m/%Y %H:%M:%S", "%-m/%-d/%Y %H:%M:%S%p", "%-d/%-m/%Y %H:%M:%S%p"):
try:
d = datetime.strptime(date_string, date_format)
break
except:
pass
if d is not None:
return d
else:
return pd.NaT

另请注意,如果您的日期和月份都在数字 1 到 12 之间,您将无法确定解析到正确的日期时间。如果可能,您应该寻找导致不同格式的原因并单独解析它们。

关于Python:将字符串中的多个日期格式更改为日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60712465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com