替换日期中的日期以适合pd.to_datetime格式

时间:2018-11-13 22:01:48

标签: python pandas string-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)。

1 个答案:

答案 0 :(得分:2)

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