如何使用熊猫将日期列设置为标准格式,即1996年12月8日。我的数据是:
我已经尝试过通过在线搜索的一些方法,但是还没有找到一种可以检测格式并使之标准化的方法。
这是我编写的代码:
df = pd.read_excel(r'date cleanup.xlsx')
df.head(10)
df.DOB = pd.to_datetime(df.DOB) #Error is in this line
我得到的错误是:
ValueError :(“未知字符串格式:”,“ 20 \ \ december \ \ 1992”)
更新: 使用
for date in df.DOB:
print(parser.parse(date))
效果很好,但是值20 \\ dedecmber \\ 1992给出了上面突出显示的错误。因此,我不熟悉数据中的所有格式,这就是为什么我一直在寻找一种可以自动检测并将其转换为标准格式的技术的原因。
答案 0 :(得分:1)
您可以使用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
设置可用于处理异常:
您还可以通过设置STRICT_PARSING完全忽略对不完整日期的解析
df['date'] = df['DOB'].apply(lambda x : dateparser.parse(x, settings={'STRICT_PARSING': True}) if len(str(x))>6 else None)