我有一个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