dt.date返回AttributeError:只能将.dt访问器与类似datetime的值一起使用

时间:2020-06-04 18:11:03

标签: python pandas attributeerror

我尝试使用pd.to_datetime()的列中的所有值看起来像例如2017-10-02 10:56:33

所以我运行了下面的代码


order_time['order_purchase_timestamp'] = pd.to_datetime(order_time['order_purchase_timestamp'], errors='coerce')
order_time['order_develiered_customer_date'] = pd.to_datetime(order_time['order_delivered_customer_date'], errors='coerce')

然后我尝试做

order_time['date_order'] = order_time['order_purchase_timestamp'].dt.date
order_time['date_delivered'] = order_time['order_delivered_customer_date'].dt.date

返回“ AttributeError:只能将.dt访问器与类似datetime的值一起使用”

我检查了dtype,他们是

dtype('<M8[ns]')

我不知道这里是什么问题。

2 个答案:

答案 0 :(得分:0)

您的目标是什么? 您在找这个吗?

order_time['date_order'] = order_time['order_purchase_timestamp'].dt.strftime('%Y/%m/%d')

Python's strftime directives

答案 1 :(得分:0)

您正在做的事情应该可行,我复制了您的示例:

df:

order_purchase_timestamp
2017-10-02 10:56:33
2017-10-02 10:56:33
2017-10-02 10:56:33
123
2017-10-02 10:56:33

代码:

df['order_purchase_timestamp'] = pd.to_datetime(df['order_purchase_timestamp'], errors='coerce')
df['date_order'] = df['order_purchase_timestamp'].dt.date
print(df)


  order_purchase_timestamp  date_order
0      2017-10-02 10:56:33  2017-10-02
1      2017-10-02 10:56:33  2017-10-02
2      2017-10-02 10:56:33  2017-10-02
3                      NaT         NaT
4      2017-10-02 10:56:33  2017-10-02

数据出了点问题,如果您可以粘贴示例,将会有所帮助。