只能使用.dt访问器和类似日期时间的值



我有一个pandas数据框架,如下所示:

key      system      impl_date
1        madison     2021-01-27T13:16:18.000-0600
2        madison     2021-01-27T13:15:04.000-0600
3        lexington   2021-01-27T13:08:27.000-0600
4        park        2021-01-27T13:05:42.000-0600

impl_date列包含字符串,因为在脚本前面我应用了以下内容:

df = df.applymap(str)

我想取impl_date列并剥离时间元素,得到以下形式的日期:

yyyy-mm-dd

我使用了以下语句:

df['impl_date'] = pd.to_datetime(df['impl_date']).dt.strftime('%Y-%m-%d')

此操作失败,并显示以下错误消息:

AttributeError:  Can only use .dt accessor with datetimelike values

我试了如下:

df['impl_date'] = pd.to_datetime(df['impl_date'], errors='coerce').dt.strftime('%Y-%m-%d')

此操作失败,并返回相同的错误信息。

df.dtypes给出如下:

key         object
system      object
impl_date   object
type:  object

type(df)给出:

pandas.core.series.Series

和,df.info()给出:

#  Column      Non-Null Count   Dtype
-  ------      --------------   -----
0  key         6453 non-null    object
1  system      6453 non-null    object
2  impl_date   6453 non-null    object

给定impl_date表示为字符串,将该列转换为yyyy-dd-mm格式的最佳方法是什么?

谢谢!

您的数据可能包含不同的时区,如:

key      system      impl_date
1        madison     2021-01-27T13:16:18.000-0600
2        madison     2021-01-27T13:15:04.000-0600
3        lexington   2021-01-27T13:08:27.000-0600
5        park        2021-01-27T13:05:42.000-0500   # here

选项是将utc=True传递给to_datetime:

pd.to_datetime(df['impl_date'], errors='coerce', utc=True).dt.strftime('%Y-%m-%d')

得到:

0    2021-01-27
1    2021-01-27
2    2021-01-27
3    2021-01-27
Name: impl_date, dtype: object

相关内容

  • 没有找到相关文章

最新更新