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的值一起使用
如何解决?
答案 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)