我有一个包含多列和多行的数据框。在其中一列中,日期以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
)。
答案 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]