Замените день на дату, чтобы она соответствовала формату pd.to_datetime - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть фрейм данных с несколькими столбцами и несколькими строками.В одном из этих столбцов есть даты, которые принимают форму mm/dd/yyyy.

Я пытаюсь преобразовать это с помощью df['col'] = pd.to_datetime(df['col']), но получаю следующую ошибку, потому что есть несколько записей с 00 вместо пропущенного месяца или дня:

ValueError: день выходит за пределы диапазона для месяца

Я не хочу делать df['col'] = pd.to_datetime(df['col'], errors = 'coerce'), потому что я хочу сохранить все имеющиеся данные.

Я бы хотел, чтобы все даты, в которых отсутствуют дни или месяцы или оба (например, 11/00/2018, 00/13/2018, or 00/00/2018), имели значение 01, если значение отсутствует (например, 11/01/2018, 01/13/2018, 01/01/2018).

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете использовать следующее регулярное выражение для замены 00:

import pandas as pd
data = ['11/00/2018', '00/13/2018', '00/00/2018']

df = pd.DataFrame(data=data, columns=['col'])
replace = df['col'].replace('00/', '01/', regex=True)
result = pd.to_datetime(replace)
print(result)

Выход

0   2018-11-01
1   2018-01-13
2   2018-01-01
Name: col, dtype: datetime64[ns]
...