【问题标题】:AttributeError: 'str' object has no attribute 'strftime' when modifying pandas dataframeAttributeError:修改熊猫数据框时,“str”对象没有属性“strftime”
【发布时间】:2018-07-11 15:05:50
【问题描述】:

我在减去日期列的一部分时遇到问题。我的目标是建立一个队列分析表。为了实现这一点,我想在我的 pandas 数据框中获取任何客户的订购月份。

      OrderDate  ConsumerId  Orders
0  2017-09-01      5555555        4
1  2017-09-01  66666666666        2
2  2017-09-01   88888888888       4
3  2017-09-01   9999999999        3
4  2017-09-01     45858888        3   

我使用下面的代码来做到这一点。

import pandas as pd

pd.set_option('max_columns', 50)
mpl.rcParams['lines.linewidth'] = 2

df = pd.read_csv("C:/Users/***/****/salesdata.csv")

df.head()

df['OrderPeriod'] = df.OrderDate.apply(lambda x: x.strftime('%Y-%m'))

Unfurtantely 我在尝试减去订购月份时收到以下错误。

 df['OrderPeriod'] = df.OrderDate.apply(lambda x: x.strftime('%Y-%m'))
 AttributeError: 'str' object has no attribute 'strftime'

我的 pandas 数据框如下所示:

      OrderDate  ConsumerId  Orders
0  2017-09-01      5555555        4
1  2017-09-01  66666666666        2
2  2017-09-01   88888888888       4
3  2017-09-01   9999999999        3
4  2017-09-01     45858888        3   

我的目标是添加一个新列,其中包含消费者订购的月份。如下所示。

       OrderDate  ConsumerId  Orders   OrderPeriod
0  2017-09-01      5555555        4      2017-09
1  2017-09-01  66666666666        2      2017-09
2  2017-09-01   88888888888       4      2017-09
3  2017-09-01   9999999999        3      2017-09
4  2017-09-01     45858888        3      2017-09

我想知道为什么会出现 AttributeError 以及如何解决这个问题。

【问题讨论】:

    标签: python pandas python-3.6 strftime


    【解决方案1】:

    使用矢量化dt.strftime,但首先通过参数parse_datesread_csv中的列转换为日期时间:

    df = pd.read_csv("C:/Users/***/****/salesdata.csv", parse_dates=['OrderDate'])
    
    df['OrderPeriod'] = df.OrderDate.dt.strftime('%Y-%m')
    print (df)
       OrderDate   ConsumerId  Orders OrderPeriod
    0 2017-09-01      5555555       4     2017-09
    1 2017-09-01  66666666666       2     2017-09
    2 2017-09-01  88888888888       4     2017-09
    3 2017-09-01   9999999999       3     2017-09
    4 2017-09-01     45858888       3     2017-09
    

    【讨论】:

      猜你喜欢
      • 2013-11-22
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多