gpt4 book ai didi

python - 在没有任何客户 ID 的情况下汇总客户支出

转载 作者:行者123 更新时间:2023-12-03 19:41:49 26 4
gpt4 key购买 nike

我有 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

最佳答案

您可以使用以下方法识别客户,然后按客户分组:

df['customer'] = df['months_from_offer'].cumsum().shift().eq(0).cumsum().add(1)
#Another way to calculate customer per @teylyn method
#df['customer'] = np.sign(df['months_from_offer']).diff().lt(0).cumsum().add(1)

df['amount'] = df['spend'].str[1:].astype(int) * np.sign(df['months_from_offer']
df.groupby('customer')['amount'].sum().reset_index()
输出:
   customer  amount
0 1 35
1 2 66
2 3 -2
它是如何完成的:
  spend  months_from_offer  customer  amount
0 $10 -2 1 -10
1 $32 -1 1 -32
2 $43 0 1 0
3 $23 1 1 23
4 $54 2 1 54
5 $21 -1 2 -21
6 $23 0 2 0
7 $87 1 2 87
8 $12 -3 3 -12
9 $83 -2 3 -83
10 $65 -1 3 -65
11 $21 0 3 0
12 $80 1 3 80
13 $67 2 3 67
14 $11 3 3 11
  • 使用 cumsum 计算“客户”列, shifteqadd从客户 1 开始。
  • 使用字符串操作计算“金额”并乘以 np.sign'从报价开始的月份'
  • sum '金额' 与 groupby '客户'
  • 关于python - 在没有任何客户 ID 的情况下汇总客户支出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63065693/

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