如何在熊猫中将混合日期时间格式转换为单一格式?

数据挖掘 熊猫
2022-02-17 13:55:13

我正在使用 DataFrame,它在一列中包含多种日期时间格式。例如:

2020-11-09 00:00:48
2020-11-09 00:00:48
2020-11-09 00:00:48
2020-11-09 00:00:48
2020-11-09 00:00:48
2020-08-25
2020-08-25
2017-08-25
2018-08-25
2020-08-25
25.08.2020
25.08.2020  
25.08.2017
25.08.2018  
25.08.2020

我想将其转换为“dd.mm.yyyy”格式。 pd.to_datetime(columnName, format = "dd.mm.yyyy")没有帮助。

2个回答

您可以使用 pd.to_datetime(data,'infer_datetime_format=True'):

使用您的数据创建数据框:

data = {'dates': ['2020-11-09 00:00:48' ,'2020-11-09 00:00:48',
                  '2020-11-09 00:00:48' ,'2020-11-09 00:00:48',
                  '2020-11-09 00:00:48' ,'2020-08-25',
                  '2020-08-25' ,'2017-08-25',
                  '2018-08-25' ,'2020-08-25',
                  '25.08.2020' ,'25.08.2020',
                  '25.08.2017' ,'25.08.2018',
                  '25.08.2020']}
mini_df = pd.DataFrame(data)

将其转换为相同的日期时间格式。

mini_df['dates'] = pd.to_datetime(mini_df['dates'], infer_datetime_format=True)

结果数据框: 结果:

import pandas as pd 

date_list = ["2020-11-09 00:00:48",
"2020-11-09 00:00:48",
"2020-11-09 00:00:48",
"2020-11-09 00:00:48",
"2020-11-09 00:00:48",
"2020-08-25",
"2020-08-25",
"2017-08-25",
"2018-08-25",
"2020-08-25",
"25.08.2020",
"25.08.2020",  
"25.08.2017",
"25.08.2018",  
"25.08.2020"]

df = pd.DataFrame(date_list,columns=['date'])  
df['date'] = df['date'].apply(lambda x: pd.to_datetime(x).strftime('%d/%m/%Y'))

输出将是

    date
0   09/11/2020
1   09/11/2020
2   09/11/2020
3   09/11/2020
4   09/11/2020
5   25/08/2020
6   25/08/2020
7   25/08/2017
8   25/08/2018
9   25/08/2020
10  25/08/2020
11  25/08/2020
12  25/08/2017
13  25/08/2018
14  25/08/2020