日期时间格式-Pandas

ubby3x7f  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(102)

我有一个Pandas框架,其中一列包含日期。但是,日期的格式并不一致。在列中具有不同类型的日期格式。当我读取的数据在datrame的列类型是日期列是对象,我希望它是“日期”。我的样本数据是:

01/12/2022
22/02/2012
12-Jan-2023
19-10-2000
03/Feb/2021

如您所见,数据格式可以是dd/mm/yyyy、dd-mm-yyyy、dd-MMM-yyyy、dd/MMM/yyyy
我使用下面的代码来尝试将其转换为标准格式

df['Date'] = pd.to_datetime(df['Date'],format='mixed')
df['Date'] = pd.to_datetime(df['Date'],format = '%d-%m-%Y')

上面的代码适用于大多数情况,但在某些情况下,如01/12/2022,它将其转换为12-01-2022。所以基本上月变成日,日变成月。
我该如何解决这个问题。

sf6xfgos

sf6xfgos1#

由于数据仍然有一个模式,并且日期总是第一个,因此可以将dayfirst参数设置为True来解决这个问题。
阅读更多here

import pandas

data = {'date': ["01/12/2022", "22/02/2012", "12-Jan-2023", "19-10-2000", "03/Feb/2021", ]}

df = pandas.DataFrame(data)

pandas.to_datetime(df['date'], dayfirst=True, format="mixed")

# output 
0   2022-12-01
1   2012-02-22
2   2023-01-12
3   2000-10-19
4   2021-02-03
Name: date, dtype: datetime64[ns]

注意:在旧版本的pandas中,format='mixed'将不起作用,您必须设置infer_datetime_format=True。但此选项已弃用,因为V2.0.0

cbjzeqam

cbjzeqam2#

假设你的日期值在源代码中是infact字符串,那么我们可以使用strftime函数,如下所示:
这个问题在基于Excel的源代码中经常发生

import pandas as pd

df = pd.DataFrame({'Date': ['01/12/2022', '22/02/2012', '12-Jan-2023', '19-10-2000', '03/Feb/2021']})

# Convert the date strings to datetime objects using the infer_datetime_format parameter
df['Date'] = pd.to_datetime(df['Date'], infer_datetime_format=True)

# Change the output format of the date column to dd-mm-yyyy
df['Date'] = df['Date'].dt.strftime('%d-%m-%Y')

# Print the DataFrame
print(df)
owfi6suc

owfi6suc3#

对于我的工作通过dayfirst=Trueformat='mixed'to_datetime

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True, format='mixed')
print (df)
        Date
0 2022-12-01
1 2012-02-22
2 2023-01-12
3 2000-10-19
4 2021-02-03

相关问题