AttributeError:使用数据框处理时间时,只能将.dt访问器与类似datetime的值一起使用

时间:2020-10-17 06:55:58

标签: python pandas dataframe datetime

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访问器与类似datetime的值一起使用

如何解决?

1 个答案:

答案 0 :(得分:2)

问题是这样的声明:

df['new_upload_time'] = df['new_upload_time'].dt.strftime('%Y-%m-%d %H:%M:%S')

运行上述命令时,会将datetime列转换为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)
相关问题