将数据框列中的不同日期格式转换为单一格式



我想在我的dataframe列中使不同的日期格式相同。

输入:

0      16.09.2014
1      2014-09-16
2      02.12.2014
3      2014-12-02
4      09.01.2018
183    2015-03-30
184    12.04.2017
185    2017-04-12
186    28.12.2018
187    2018-12-28
Name: invoiceDate, Length: 188, dtype: object

但是我用:

df['invoiceDate'] = pd.to_datetime(df['invoiceDate'], errors='coerce') 
df['invoiceDate'].dt.strftime('%d.%m.%Y') 

输出:(它以相同的格式写入前两个,但随后它出错了,逐日和逐月。)

0      16.09.2014
1      16.09.2014
2      12.02.2014 (true)
3      02.12.2014 (false)
4      01.09.2018

183    30.03.2015
184    04.12.2017 (true)
185    12.04.2017 (false)
186    28.12.2018
187    28.12.2018
Name: invoiceDate, Length: 188, dtype: object

如果输出应该是;

输出:

0      16.09.2014
1      16.09.2014
2      02.12.2014
3      02.12.2014
4      09.01.2018
183    30.03.2015
184    12.04.2017
185    12.04.2017
186    28.12.2018
187    28.12.2018
Name: invoiceDate, Length: 188, dtype: object

在这种特殊情况下,您只需要传递dayfirst=True来解析您想要的日期

df['invoiceDate'] = (
pd.to_datetime(df['invoiceDate'], errors='coerce', dayfirst=True)
.dt.strftime('%d.%m.%Y')
)

如果将日期列设置为= date,则可以执行以下操作

df['Date'] = pd.to_datetime(df['Date'], infer_datetime_format=True)

从这里你可以简单地告诉它你想要的日期格式使用strftime

df['Date'] = df['Date'].apply(lambda x : x.strftime('%d.%m.%Y'))

最新更新