首页 > 解决方案 > 在没有任何客户 ID 的情况下汇总客户支出

问题描述

我有 2 列,如下所示。第一列是支出,第二列是从报价开始的月份。不幸的是,没有识别每个客户的 ID。在下面的例子中,有三个客户。例如,前 5 行代表客户 1,接下来的 3 行是客户 2,最后 7 行是客户 3。您可以通过查看months_from_offer 来判断,每个客户从 -x 到 x 个月(x 不是每个客户都必须相同,如此处所示,其中 x=2,1,3 分别为客户 1,2,3)。

我要做的是计算每个客户的报价后支出与报价前支出的差异。我不关心个别客户本身,但我想要一个概述 - 例如,10 位客户的后期/前期差异在 0 美元到 100 美元之间。

作为以下数据的示例,要计算客户 1 的 post/pre offer 差异,它是-$10 - $32 + $23 + $54 = $35

对于客户 2:-$21 + $87 = $66

对于客户 3:-$12 - $83 - $65 + $80 + $67 + $11 = -$2

spend  months_from_offer
$10    -2
$32    -1
$43     0
$23     1
$54     2
$21    -1
$23     0
$87     1
$12    -3
$83    -2
$65    -1
$21     0
$80     1
$67     2
$11     3

标签: pythonexcelpandas

解决方案


创建标识

s = df['months_from_offer'].iloc[::-1].cumsum().eq(0).iloc[::-1].cumsum()
0     1
1     1
2     1
3     1
4     1
5     2
6     2
7     2
8     3
9     3
10    3
11    3
12    3
13    3
14    3
Name: months_from_offer, dtype: int32

然后assign

df['id']=s 

推荐阅读