首页 > 解决方案 > 替换日期中的日期以适应 pd.to_datetime 格式

问题描述

我有一个包含多列和多行的数据框。在这些列之一中,日期格式为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)。

标签: pythonpandasstring-to-datetime

解决方案


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

推荐阅读