【发布时间】:2018-01-13 20:23:22
【问题描述】:
我在 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日)。
【问题讨论】:
-
为什么每个单元格的 strptime() 会太耗时?你的名单有多大?不是只需要运行一次吗?
-
您与
pd.to_datetime(df.date)有多接近? -
我的数据框只有大约 500 行。它是易于管理的,但肯定有更好的方法可以一次性转换所有这些格式。
-
当我应用 pd.to_datetime(df.date) 时,它说“
is not convertible to datetime”,因为数据框中的每一行都是一个列表对象。 -
df.date.apply(lambda x: pd.to_datetime(x).strftime('%m/%d/%Y'))工作吗?
标签: python list pandas datetime dataframe