【发布时间】:2020-12-23 21:38:52
【问题描述】:
我有一个数据框 df,例如:
date | productnumber | kpi
2018-04-02 | 1 | 0.3
2018-04-02 | 1 | 0.7
2018-04-02 | 1 | 0.5
2018-04-02 | 2 | 0.1
2018-04-02 | 2 | 0.1
2018-04-02 | 2 | 0.8
2018-04-02 | 3 | 0.1
2018-04-02 | 3 | 0.2
2018-04-02 | 4 | 1.8
2018-04-06 | 1 | 3.2
2018-04-06 | 2 | 0.1
2018-04-06 | 2 | 0.2
2018-04-06 | 4 | 0.4
首先我需要按相同的日期和产品编号进行分组,以总结同一天所有相同产品的 kpi。
这应该是可能的:
df = df.groupby(["date", "productnumber "]).sum()
date | productnumber | kpi
2018-04-02 | 1 | 1.5
2018-04-02 | 2 | 1.0
2018-04-02 | 3 | 0.3
2018-04-02 | 4 | 1.8
2018-04-06 | 1 | 3.2
2018-04-06 | 2 | 0.3
2018-04-06 | 4 | 0.4
然后我需要按productnumber和week总结所有产品
最终结果应该是这样的:
date | productnumber | kpi
2018-04-02 | 1 | 4.7
2018-04-02 | 2 | 1.3
2018-04-02 | 3 | 0.3
2018-04-02 | 4 | 2.2
那我需要把所有的kpi
date | kpi
2018-04-02 | 8.2
如果我的日期是 2018 年 31 月 12 日,而这一天是一年中的一个星期一,那将是 1,因此仅使用 week_of_year 创建一个列并按此分组是行不通的。
我该如何解决这个问题?
【问题讨论】:
-
产品 4。为什么在第二个
group之后预期kpi= 0.4 而不是 2.2(1.8 + 0.4)? -
2018-04-01/2018-04-07期间为实际日期:2018-04-01, 2018-04-06 -
对不起,你当然是对的。编辑了第二个“分组依据”(如何在 cmets 中将背景设为灰色?)。
-
here 示例