У меня есть DataFrame, в котором не все даты указаны правильно. Мне нужно очистить некоторые даты, чтобы Pandas .to_datetime смог проанализировать информацию.
Это мой DataFrame:
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 явно опечатка of 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)
Это возвращает ошибку неправильного escape \ d в позиции 0
Я также пробовал:
df.Datum.str.replace(r'^[1|2][4-9][4-9]....$', '{}-{}-{}'.format(df['Datum'][:2], df['Datum'][2:3], df['Datum'][3:]), regex=True)
Это работает, но ничего не меняет.
Я попытался поиграть с кодом, но безуспешно. Указатель будет признателен.