首页 > 解决方案 > pandas to_datetime 将日期时间字符串转换为 0

问题描述

我在 a 中有一个df包含datetime字符串的列,

inv_date
24/01/2008
15/06/2007 14:55:22
08/06/2007 18:26:12
15/08/2007 14:53:25
15/02/2008
07/03/2007
13/08/2007

我使用pd.to_datetimewith format%d%m%Y将字符串转换为datetime值;

pd.to_datetime(df.inv_date, errors='coerce', format='%d%m%Y')

我有

inv_date
24/01/2008
0
0
0
15/02/2008
07/03/2007
13/08/2007

inv_date该格式是从最常见的日期时间格式推断出来的;我想知道如何不将15/06/2007 14:55:22, 08/06/2007 18:26:12,转换15/08/2007 14:53:25为 0,但是15/06/2007, 08/06/2007, 15/08/2007.

标签: pythonpython-3.xpandasdatetime

解决方案


使用常规pd.to_datetime调用,然后使用.dt.date

>>> pd.to_datetime(df.inv_date).dt.date
0    2008-01-24
1    2007-06-15
2    2007-08-06
3    2007-08-15
4    2008-02-15
5    2007-07-03
6    2007-08-13
Name: inv_date, dtype: object
>>> 

或者正如@ChrisA 提到的,您也可以使用,唯一的问题是熊猫格式已经很好,所以跳过了那部分:

>>> pd.to_datetime(df.inv_date.str[:10], errors='coerce')
0    2008-01-24
1    2007-06-15
2    2007-08-06
3    2007-08-15
4    2008-02-15
5    2007-07-03
6    2007-08-13
Name: inv_date, dtype: object
>>> 

推荐阅读