【问题标题】:AttributeError: Can only use .dt accessor with datetimelike values when use dataframe to deal timeAttributeError:当使用数据框处理时间时,只能使用带有 datetimelike 值的 .dt 访问器
【发布时间】:2020-10-18 10:47:39
【问题描述】:

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: 只能使用带有 datetimelike 值的 .dt 访问器

如何解决?

【问题讨论】:

    标签: python pandas dataframe datetime


    【解决方案1】:

    问题是这样的说法:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 2020-03-27
      • 1970-01-01
      • 2018-12-22
      相关资源
      最近更新 更多