我如何在Pandas Dataframe中将这些日期转换为正确的格式?

beq87vna  于 2023-03-16  发布在  其他
关注(0)|答案(3)|浏览(132)

我有一个包含一些日期的 Dataframe ,我想将它们转换为日期时间格式。所以我使用了pd.to_datetime函数来完成。然而,它只适用于一些日期,因为其他日期没有按照正确的顺序写入。例如:

df = pd.DataFrame({'dates' : ['December 2021 17', '2005 July 01', 'December 2000 01', '2008 May 11', 
                              'October 2000 04', 'September 2016 04', 'May 1998 09']})

使用pd.to_datetime只会返回yy-mm-dd顺序的值,我试着将这些值拆分成列表并重新排序,但似乎不起作用。

svdrlsy4

svdrlsy41#

可以使用apply并将其赋值为to_datetime

df.dates = df.dates.apply(pd.to_datetime)

下面是df的输出:

dates
0 2021-12-17
1 2005-07-01
2 2000-12-01
3 2008-05-11
4 2000-10-04
5 2016-09-04
6 1998-05-09
n8ghc7c1

n8ghc7c12#

一个选项是提取年、月和日期

y = df['dates'].str.extract(r'(?P<year>\b\d{4}\b)',expand=False) 
d = df['dates'].str.extract(r'(?P<day>\b\d{2}\b)',expand = False) 
m = df['dates'].str.extract(r'(?P<month>\b[A-Za-z]+\b)',expand = False)

pd.to_datetime(y.str.cat([m,d]),format = '%Y%B%d')

输出:

0   2021-12-17
1   2005-07-01
2   2000-12-01
3   2008-05-11
4   2000-10-04
5   2016-09-04
6   1998-05-09
e4eetjau

e4eetjau3#

如果你不习惯使用@Marcelo Paco建议的apply函数(函数式编程),你可以试试这个。
假设您的 Dataframe 名为date_df,您可以将dates列转换为您想要的格式,如下所示;

import pandas as pd

date_df['dates'] = pd.to_datetime(date_df['dates'])
date_df

输出:

dates
0   2021-12-17
1   2005-07-01
2   2000-12-01
3   2008-05-11
4   2000-10-04
5   2016-09-04
6   1998-05-09

相关问题