Pandas 基于group by聚合(计算)总和与总计数之比的最佳方式(运行时)

Pandas 基于group by聚合(计算)总和与总计数之比的最佳方式(运行时),pandas,python-3.6,calculation,Pandas,Python 3.6,Calculation,我试图确定每个人(客户ID)的已批准申请(由标志“1”标识,如果不是,则为“0”)与总申请的比率。我已经通过下面的代码实现了这个逻辑,但是对于1.6m的记录,计算这个逻辑大约需要10分钟。是否有更快的方法来执行相同的操作 # Finding ratio of approved out of total applications df_approved_ratio = df.groupby('Cust_ID').apply(lambda x:x['STATUS_Approved'].sum()/l

我试图确定每个人(客户ID)的已批准申请(由标志“1”标识,如果不是,则为“0”)与总申请的比率。我已经通过下面的代码实现了这个逻辑,但是对于1.6m的记录,计算这个逻辑大约需要10分钟。是否有更快的方法来执行相同的操作

# Finding ratio of approved out of total applications
df_approved_ratio = df.groupby('Cust_ID').apply(lambda x:x['STATUS_Approved'].sum()/len(x))

我认为需要通过<代码>平均值<代码>:

df = pd.DataFrame({'STATUS_Approved':[0,1,0,0,1,1],
                   'Cust_ID':list('aaabbb')})

print (df)
   STATUS_Approved Cust_ID
0                0       a
1                1       a
2                0       a
3                0       b
4                1       b
5                1       b

df_approved_ratio = df.groupby('Cust_ID')['STATUS_Approved'].mean()
print (df_approved_ratio)
Cust_ID
a    0.333333
b    0.666667
Name: STATUS_Approved, dtype: float64

print (df.groupby('Cust_ID').apply(lambda x:x['STATUS_Approved'].sum()/len(x)))
Cust_ID
a    0.333333
b    0.666667
Name: STATUS_Approved, dtype: float64

使用平均值更快,是我问题的一个很好的替代方法。谢谢另外,如果有两个以上的状态(类别),你能帮我吗?我目前正在写一个有4个状态值的专栏。@Harish-是的,我的问题是需要回家,所以请尝试创建新问题。请添加一些样本数据和预期输出,可以自由修改我的样本数据。谢谢,当然可以。感谢您的及时回复@Harish抱歉,请看您的评论,所以添加了更好更快的答案。我希望它运作良好。答案是由手机创建的,所以并没有输出,也并没有很好的格式。