Pandas 从按唯一ID分组的多个类别中聚合(计算)特定类别的比率
作为我上一个问题的后续行动, 感谢@jezrael 我的另一列有4种不同的状态-例如1,2,3,4 我现在试图找到每个ID的1的比率Pandas 从按唯一ID分组的多个类别中聚合(计算)特定类别的比率,pandas,python-3.6,calculation,Pandas,Python 3.6,Calculation,作为我上一个问题的后续行动, 感谢@jezrael 我的另一列有4种不同的状态-例如1,2,3,4 我现在试图找到每个ID的1的比率 df = pd.DataFrame({'STATUS':[1,2,1,3,4,1,2,3,1,1],'Cust_ID':list('aaabbbccdd')}) 期望输出: 查找每个ID的1的比率 你可以用 df.groupby('Cust_ID')['STATUS'].apply(lambda x: (x == 1).mean()) 输出: Cust_ID
df = pd.DataFrame({'STATUS':[1,2,1,3,4,1,2,3,1,1],'Cust_ID':list('aaabbbccdd')})
期望输出:
查找每个ID的1的比率
你可以用
df.groupby('Cust_ID')['STATUS'].apply(lambda x: (x == 1).mean())
输出:
Cust_ID
a 0.666667
b 0.333333
c 0.000000
d 1.000000
Name: STATUS, dtype: float64
你可以用
df.groupby('Cust_ID')['STATUS'].apply(lambda x: (x == 1).mean())
输出:
Cust_ID
a 0.666667
b 0.333333
c 0.000000
d 1.000000
Name: STATUS, dtype: float64
使用eq==为一列数据帧创建的布尔掩码的平均值:
对于2列df:
使用eq==为一列数据帧创建的布尔掩码的平均值:
对于2列df:
谢谢此解决方案性能更好!谢谢此解决方案性能更好!
df1 = df['STATUS'].eq(1).groupby(df['Cust_ID']).mean().reset_index()
#alternative
#df1 = (df['STATUS'] == 1).groupby(df['Cust_ID']).mean().reset_index()
print (df1)
Cust_ID STATUS
0 a 0.666667
1 b 0.333333
2 c 0.000000
3 d 1.000000