如何使用 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')
更新: 使用
for date in df.DOB:
print(parser.parse(date))
效果很好,但有一个值 20\\december\\1992,它会给出上面突出显示的错误。因此,我并不熟悉数据中的所有格式,这就是为什么我正在寻找一种可以自动检测数据并将其转换为标准格式的技术。
最佳答案
您可以使用dateparser
图书馆:
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 |
编辑
注意,有一个 STRICT_PARSING
可用于处理异常的设置:
You can also ignore parsing incomplete dates altogether by setting STRICT_PARSING
df['date'] = df['DOB'].apply(lambda x : dateparser.parse(x, settings={'STRICT_PARSING': True}) if len(str(x))>6 else None)
关于python - 使用 pandas 将日期列转换为标准格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56629179/