假设你想转换为datetime,你不一定要清理字符串,你可以通过
exact=False
到
to_datetime
:
df['out'] = pd.to_datetime(df['date'], format='%d/%m/%Y', exact=False)
否则,对于字符串,请使用
(\d{2}/\d{2}/\d{4})
正则表达式和
str.extract
df['clean'] = df['date'].str.extract(r'(\d{2}\/\d{2}\/\d{4})')
输出:
id date out clean
0 1 : 07/01/2020 23:25 2020-01-07 07/01/2020
1 2 : 07/02/2020 2020-02-07 07/02/2020
2 3 07/03/2020 23:25 1 2020-03-07 07/03/2020
3 4 07/04/2020 2020-04-07 07/04/2020
4 5 23:50 07/05/2020 2020-05-07 07/05/2020
更新示例:
用空格提取或
/
作为分离器,那么
replace
空间由
/
.
df['clean'] = (df['date']
.str.extract(r'(\d{2}[ /]\d{2}[ /]\d{4})',
expand=False)
.str.replace(' ', '/')
)
输出:
id date clean
0 1 : 07/01/2020 23:25 07/01/2020
1 2 : 07/02/2020 07/02/2020
2 3 07/03/2020 23:25 1 07/03/2020
3 4 07/04/2020 07/04/2020
4 5 23:50 07/05/2020 07/05/2020
5 6 07 06 2023 07/06/2023
6 7 00:00 07 07 2023 07/07/2023