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']
如果您有特殊要求无法实现此功能,请告诉我。
我是 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']
如果您有特殊要求无法实现此功能,请告诉我。