在熊猫中将不规则日期列转换为标准日期格式

时间:2019-11-26 02:36:51

标签: python pandas datetime

我正在使用一个数据帧,其中有一个date列,格式不规则,即:

          date
0     1991/1/1
1     1970/1/1
2   1991/01/01
3   1996-01-01
4   1996-06-30
5   1995-12-31
6   1997-01-01
7     1970/1/1
8   1996-01-01
9   1997-01-01
10  1996-01-01

如何将其转换为代表XXXX-XX-XX的标准格式year-month-date

使用df.date.unique(),我得到以下输出,实际上,我想查看所有唯一的日期值:

array(['2017-10-01', '2015-1-1', '2008-06-01', ...,
       datetime.datetime(2005, 2, 1, 0, 0),
       datetime.datetime(2004, 5, 1, 0, 0),
       datetime.datetime(2016, 3, 20, 0, 0)], dtype=object)

使用df['date'] = pd.to_datetime(df['date']),我得到:

ValueError: month must be in 1..12

有人可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:1)

选中errors='coerce'

df['Date']=pd.to_datetime(df.date,errors='coerce')

对于那些返回nan的行,由于是特殊情况,我们可能需要逐行检查。但是,这里的想法是

df['Date']=np.where(df['Date'].isnull(), pd.to_datetime(df.date,format='something here'),df['Date'])