Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用pandas将日期列转换为标准格式_Python_Pandas_Datetime - Fatal编程技术网

Python 使用pandas将日期列转换为标准格式

Python 使用pandas将日期列转换为标准格式,python,pandas,datetime,Python,Pandas,Datetime,如何使用pandas将日期列转换为标准格式,即12-08-1996。我掌握的数据是: 我尝试了一些在线搜索的方法,但没有找到一种可以检测格式并使其标准化的方法 以下是我编写的代码: df = pd.read_excel(r'date cleanup.xlsx') df.head(10) df.DOB = pd.to_datetime(df.DOB) #Error is in this line 我得到的错误是: ValueError:('Unknown string format:','20

如何使用pandas将日期列转换为标准格式,即12-08-1996。我掌握的数据是:

我尝试了一些在线搜索的方法,但没有找到一种可以检测格式并使其标准化的方法

以下是我编写的代码:

df = pd.read_excel(r'date cleanup.xlsx')
df.head(10)
df.DOB = pd.to_datetime(df.DOB) #Error is in this line
我得到的错误是:

ValueError:('Unknown string format:','20\\december\\1992')

更新: 使用

工作正常,但有一个值20\\december\\1992,它给出了上面突出显示的错误。因此,我不熟悉数据中的所有格式,这就是为什么我在寻找一种能够自动检测数据并将其转换为标准格式的技术。

您可以使用库:

输出

|   |        DOB         |    date    |
|---|--------------------|------------|
| 0 | 12 aug 1996        | 1996-08-12 |
| 1 | 24th december 2006 | 2006-12-24 |
| 2 | 20\ december \2007 | 2020-12-07 |
编辑

注意,有一个设置可用于处理异常:

您还可以通过设置STRICT_parsing来完全忽略解析不完整的日期


从dateutil导入解析器
parser.parse('17 Jun')
给出
datetime.datetime(2019,6,17,0,0)
,如果它不起作用,请提供要创建的代码df@anky_91这很好,但是有一些字符串出现了错误,比如
20\\december\\1992
。我得到了一个错误:
TypeError:输入类型必须是str或unicode
df.dtypes给出了什么?试试
pd.read\u excel(r'date cleanup.xlsx',converters={'DOB':str})
导入excel文件时,
df.dtypes
显示DOB的类型是
DOB对象
并键入
pd.read\u excel(r'date cleanup.xlsx',converters={'DOB':str})
给出了相同的错误。将
dateparser.parse(x)
替换为
dateparser.parse(str(x))
DOB
的格式有问题,但无法确定没有该文件会发生什么
import dateparser

df = pd.DataFrame(["12 aug 1996", "24th december 2006", "20\\ december \\2007"], columns = ['DOB'])
df['date'] = df['DOB'].apply(lambda x :dateparser.parse(x))
|   |        DOB         |    date    |
|---|--------------------|------------|
| 0 | 12 aug 1996        | 1996-08-12 |
| 1 | 24th december 2006 | 2006-12-24 |
| 2 | 20\ december \2007 | 2020-12-07 |
df['date'] = df['DOB'].apply(lambda x : dateparser.parse(x, settings={'STRICT_PARSING': True}) if len(str(x))>6 else None)