python - AttributeError:当使用数据框处理时间时,只能使用具有 datetimelike 值的 .dt 访问器
问题描述
test.csv 中的数据如下:
device_id,upload_time
id1,2020-06-01 07:46:30+00:00
id2,2020-06-05 16:04:32+00:00
当我使用此代码添加数据框列时。
import pandas as pd
df = pd.read_csv(r'E:/test.csv',parse_dates=[1], encoding='utf-8')
df['new_upload_time'] = df['upload_time'] + pd.Timedelta(hours=8) #add 8 hours
df['new_upload_time'] = df['new_upload_time'].dt.strftime('%Y-%m-%d %H:%M:%S')
df['upload_time_year_month'] = df['new_upload_time'].dt.strftime('%Y%m')
df.to_csv(r'E:/result.csv', index=False, mode='w', header=True)
错误信息是:
AttributeError:只能将 .dt 访问器与 datetimelike 值一起使用
如何解决?
解决方案
问题是这样的声明:
df['new_upload_time'] = df['new_upload_time'].dt.strftime('%Y-%m-%d %H:%M:%S')
当您运行上述内容时,您将datetime
column 转换为object
. 因此,当您使用.dt
它时,它会失败。
您可以像这样更改语句的顺序,它将起作用:
df = pd.read_csv(r'E:/test.csv',parse_dates=[1], encoding='utf-8')
df['new_upload_time'] = df['upload_time'] + pd.Timedelta(hours=8) #add 8 hours
df['upload_time_year_month'] = df['new_upload_time'].dt.strftime('%Y%m')
df['new_upload_time'] = df['new_upload_time'].dt.strftime('%Y-%m-%d %H:%M:%S')
df.to_csv(r'E:/result.csv', index=False, mode='w', header=True)
推荐阅读
- jupyter-notebook - 如何以编程方式重命名 Jupyter Notebook?
- gdcm - 使用 GDCM 更改 DICOM 文件中特定标记值的最有效方法
- jquery - 如何在 Kendo 调度程序上编辑 Kendo DateTimePicker?
- perl - 使用 Perl 的动态作用域时如何避免全局变量声明?
- c# - 使用 selenium 和 specflow c# 验证所有值都在下拉列表中
- c# - 从 .NET Core Web API 调用 SalesForce API 并将响应反序列化到 ac# 对象?
- image-uploading - 如何将 medium-editor-insert-plugin 与 laravel 5.5 集成
- php - 如何在 Node.js 中使用 array_filter
- excel - VB在多页中右键复制/粘贴
- behaviorsubject - 行为主题取消订阅重构