我在pandas.DataFrame
中有一个以各种日期时间格式表示的日期列,并存储为列表对象,如下所示:
date
1 [May 23rd, 2011]
2 [January 1st, 2010]
...
99 [Apr. 15, 2008]
100 [07-11-2013]
...
256 [9/01/1995]
257 [04/15/2000]
258 [11/22/68]
...
360 [12/1997]
361 [08/2002]
...
463 [2014]
464 [2016]
为了方便起见,我想将它们全部转换为MM / DD / YYYY格式.似乎无法使用regex replace()函数来执行此操作,因为无法对列表对象执行此操作.另外,对每个单元使用strptime()会很费时.
将它们全部转换为所需的MM / DD / YYYY格式的简单方法是什么?我发现很难对数据框内的列表对象执行此操作.
注意:对于格式为[YYYY]的单元格值(例如[2014]和[2016]),我将假定它们是该年的第一天(即1968年1月1日),并且对于诸如[08]的单元格值/ 2002](或[8/2002]),则假定它们是当年某月的第一天(即2002年8月1日).
解决方法:
码:
df.date.apply(lambda x: pd.to_datetime(x).strftime('%m/%d/%Y')[0])
测试代码:
import pandas as pd
df = pd.DataFrame([
[['']],
[['May 23rd, 2011']],
[['January 1st, 2010']],
[['Apr. 15, 2008']],
[['07-11-2013']],
[['9/01/1995']],
[['04/15/2000']],
[['11/22/68']],
[['12/1997']],
[['08/2002']],
[['2014']],
[['2016']],
], columns=['date'])
df['clean_date'] = df.date.apply(
lambda x: pd.to_datetime(x).strftime('%m/%d/%Y')[0])
print(df)
结果:
date clean_date
0 [] NaT
1 [May 23rd, 2011] 05/23/2011
2 [January 1st, 2010] 01/01/2010
3 [Apr. 15, 2008] 04/15/2008
4 [07-11-2013] 07/11/2013
5 [9/01/1995] 09/01/1995
6 [04/15/2000] 04/15/2000
7 [11/22/68] 11/22/1968
8 [12/1997] 12/01/1997
9 [08/2002] 08/01/2002
10 [2014] 01/01/2014
11 [2016] 01/01/2016
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。