【发布时间】:2020-07-08 22:37:31
【问题描述】:
我对编程很陌生,我正在使用 Python 进行数据操作和分析。
我有一个看起来像这样的数据框:
Brand Date Unit
A 1/1/19 10
B 3/1/19 11
A 11/1/19 15
B 11/1/19 5
A 1/1/20 10
A 9/2/19 18
B 12/2/19 11
B 19/2/19 8
B 1/1/20 5
我想按月、年和品牌分组。如果有帮助,我还有单独的月份和年份列。预期结果应如下所示:
Brand Date Unit
A Jan 2019 25
B Jan 2019 16
A Feb 2019 18
B Feb 2019 19
A Jan 2020 8
B Feb 2020 5
我尝试改编别人问题的答案:
per = df.Date.dt.to_period("M")
g = df.groupby(per,'Brand')
g.sum()
但我收到提示:
ValueError: No axis named Brand for object type <class 'pandas.core.frame.DataFrame'>
我不知道如何解决这个问题。
我曾经通过单独选择每个月/年,按总和分组然后创建字典来使用字典来执行此操作,但这似乎是一种蛮力,非常粗糙,如果 df 更新为新的,这将无济于事数据。
更重要的是,也许我对这种情况的态度不好。最后,我希望 df 看起来像:
Brand Jan 19 Feb 19 Jan 20
A 25 18 8
B 16 19 5
【问题讨论】:
-
谢谢!非常有用的信息,我对此一无所知,确实它使我走上了正轨。但是,它看起来仍然无法解决按日期分组的问题,因为日期本质上是独一无二的,因为它还包括日期(日期“太”独特了?)。也许如果我创建另一列没有日期(2019 年 1 月 1 日 -> 2019 年 1 月)?
-
Groupby 想要一个列表
g = df.groupby([per,'Brand'])