【发布时间】:2020-09-17 01:47:00
【问题描述】:
我有一个数据框,其中的日期没有全部正确填写。我需要清理一些日期,以便 Pandas.to_datetime 能够解析信息。
这是我的数据框:
import pandas
datums = {'Naam': ['Alfa', 'Beta', 'Gamma', 'Delta', 'Epsilon', 'Zieta', 'Icta', 'Thieta',
'Jotta', 'Kappa', 'Lambda', 'Mu', 'Nu'],
'Datum': ['2842001', '0952002', '1312003', '1112004', '1122005', '3122006', '2232007', '3112008',
'1212009', '9102010', '3292011', '3302012', '4412013']}
df = pandas.DataFrame(datums, columns=['Naam', 'Datum'])
Naam Alfa 的第一行显然是 28042001 的错字。
我可以使用 str.contains('^[1|2][4-9[4-9]....$' 过滤正确的行
当我尝试使用 str.replace 时,我无法保留现有数据,而只能在正确的位置添加连字符。
这是我尝试过的:
df.Datum.str.replace(r'^[1|2][4-9][4-9]....$', '\d\d-\d-\d\d\d\d', regex=True)
这会在位置 0 处返回错误转义 \d 的错误
我也试过了:
df.Datum.str.replace(r'^[1|2][4-9][4-9]....$', '{}-{}-{}'.format(df['Datum'][:2], df['Datum'][2:3], df['Datum'][3:]), regex=True)
这会运行但不会改变任何东西。
我尝试过使用代码,但没有任何运气。一个指针将不胜感激。
【问题讨论】:
标签: python python-3.x regex pandas