gpt4 book ai didi

python - 函数内的 Group by 未正确分组

转载 作者:行者123 更新时间:2023-12-01 09:23:06 25 4
gpt4 key购买 nike

因此,我正在尝试创建一个函数,可以让我根据多种因素快速创建数据透视表。但是,每次运行它时,该函数都不会删除索引,从而不会聚合数据。

例如,这是我一直在使用的 dframe 之一

     User_ID    Trans_Type  Date      Revenue    Cohort    Month
0 958507335 Purchase 2013-02-01 22.0 2013-02 2013-02
1 77396089 Purchase 2013-02-01 50.0 2013-02 2013-04
2 168623910 Sale 2013-02-01 20.0 2013-02 2013-02
3 124390583 Sale 2013-02-01 53.0 2013-02 2013-03
4 312221573 Sale 2013-02-01 160.0 2013-02 2013-04
5 767171090 Sale 2013-02-01 56.0 2013-02 2013-04
6 328835282 Sale 2013-02-01 76.0 2013-02 2013-02
7 289850608 Sale 2013-02-01 27.0 2013-02 2013-06
8 926145734 Sale 2013-02-01 16.0 2013-02 2013-02
9 950422305 Sale 2013-02-01 49.0 2013-02 2013-04

基本上有两种交易类型。销售和购买。

这是我用来创建数据透视表的函数。

x = 'Sale'
df = df.set_index('User_ID', inplace=True)

def LTV_calc_(df):
df1 = df[df['Transaction_Type'] == x]
#Convert to a pivot table
df2 = df1.groupby(['Cohort','Month'])
df3 = df2.agg({'User_ID': ['count'],
'Revenue': ['sum']})

return df3
Sales = df.groupby(level=0).apply(LTV_calc_)

现在,当我运行 Sales DF 时,结果如下:

                      User_ID Revenue
count sum
Cohort Month
16940 2013-02 2013-02 1 59.0
16941 2013-02 2013-02 1 62.0
16942 2013-04 2013-04 1 288.0
16943 2013-02 2013-02 1 33.0
16944 2013-05 2013-05 1 14.0
16945 2013-03 2013-03 1 0.0

每当我运行没有函数的代码时,它都会正确生成:

               User_ID  Rev/Payout
count sum
Cohort Month
2013-02 2013-02 293 8449.0
2013-03 41 1208.0
2013-04 52 1708.0
2013-05 55 2469.0
2013-06 62 2911.0

我曾多次遇到过这个问题。

有人知道我做错了什么吗?

最佳答案

无需调用groupby().apply(),只需调用该函数即可进行计算。

import pandas as pd

x = 'Sale'

def LTV_calc_(df):
return df[df['Trans_Type'] == x].groupby(['Cohort','Month']).agg({'User_ID': ['count'],
'Revenue': ['sum']})

Sales = LTV_calc_(df)

df
Out[79]:
User_ID Trans_Type Date Revenue Cohort Month
0 958507335 Purchase 2013-02-01 22.0 2013-02 2013-02
1 77396089 Purchase 2013-02-01 50.0 2013-02 2013-04
2 168623910 Sale 2013-02-01 20.0 2013-02 2013-02
3 124390583 Sale 2013-02-01 53.0 2013-02 2013-03
4 312221573 Sale 2013-02-01 160.0 2013-02 2013-04
5 767171090 Sale 2013-02-01 56.0 2013-02 2013-04
6 328835282 Sale 2013-02-01 76.0 2013-02 2013-02
7 289850608 Sale 2013-02-01 27.0 2013-03 2013-06
8 926145734 Sale 2013-02-01 16.0 2013-03 2013-02
9 950422305 Sale 2013-02-01 49.0 2013-04 2013-04

Sales
Out[80]:
User_ID Revenue
count sum
Cohort Month
2013-02 2013-02 2 96.0
2013-03 1 53.0
2013-04 2 216.0
2013-03 2013-02 1 16.0
2013-06 1 27.0
2013-04 2013-04 1 49.0

关于python - 函数内的 Group by 未正确分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652204/

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