python 中的日期格式不一致

Inconsistent Date format in python

我是 Python 的新手,我有一个日期列格式如下的文件:

date = pd.Series(['10-21-2012 ', '7-18-2019 ', '02-2-2008', 
                  '2010/21/4 ', '11-8-2019 ']) 

我使用以下代码获取月份,但出现错误:

ValueError: month must be in 1..12

代码:

pd.to_datetime(date).dt.month

输出应该是

10
7
02
4
11

有人可以帮我解决这个问题吗?

忽略具有 /

的值
In [13]: date = pd.Series(['10-21-2012 ', '7-18-2019 ', '02-2-2008',
    ...:                 '2010/21/4 ', '11-8-2019 '])

In [14]: pd.to_datetime(date, errors="coerce").dt.month
Out[14]:
0    10.0
1     7.0
2     2.0
3     NaN
4    11.0
dtype: float64

欢迎!
您可以在将日期列表传递给 Pandas 系列对象之前对其进行“规范化”。
创建一个可以执行此操作的函数,如果需要,您也可以在代码中的其他地方使用它。
从你的系列来看,你似乎有两种主要的日期排列格式:
- mm-dd-yyyy
- yyyy/dd/mm

def get_months(date_list):  
    month_list = []  
    m = ''
    for dt_string in date_list:
        if "-" in dt_string:
            numbers = [int(x) for x in dt_string.split("-")]
            m = f'{numbers[0]}-{numbers[1]}-{numbers[2]}'
            month_list.append(m)
        elif "/" in dt_string:
            numbers = [int(x) for x in dt_string.split("/")]
            m = f'{numbers[2]}-{numbers[1]}-{numbers[0]}'
            month_list.append(m)
    return month_list

dates = ['10-21-2012', '7-18-2019', '02-2-2008', '2010/21/4', '11-8-2019']

months = get_months(dates)

[print(x) for x in months]

这将创建一个如下所示的列表:

['10-21-2012','7-18-2019','2-2-2008','4-21-2010','11-8-2019']  

如果您有特殊要求无法实现此功能,请告诉我。