gpt4 book ai didi

python - 属性错误 : 'str' object has no attribute 'strftime' when modifying pandas dataframe

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:45 26 4
gpt4 key购买 nike

我在减去日期列的一部分时遇到问题。我的目标是建立一个队列分析表。为了实现这一点,我想在我的 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'))

在尝试减去订购月份时,不知不觉地出现了以下错误。

 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 以及如何解决这个问题。

最佳答案

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

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

关于python - 属性错误 : 'str' object has no attribute 'strftime' when modifying pandas dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48560224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com