将日期中的日期替换为符合 pd.to_datetime 格式

Replace the day in a date in to fit the pd.to_datetime format

我有一个包含多列和多行的数据框。在这些列之一中,日期采用 mm/dd/yyyy 的形式。

我正在尝试使用 df['col'] = pd.to_datetime(df['col']) 转换它,但出现以下错误,因为有多个记录在缺少月份或日期的地方有 00

ValueError: day is out of range for month

我不想 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)。

您可以使用以下正则表达式替换 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]