熊猫:通过计算概率组



在根据用例计算组的概率时,我无法理解输出。我有兴趣计算概率,例如,在下面的数据帧中,按a2a1概率分组

import pandas as pd 
df = pd.DataFrame([[1,1,0],[0,1,1],[0,1,1],[1,1,0],[1,1,0],[1,0,0]],
columns=['a1','a2','a3'])
df[["a1","a2"]].groupby('a1').apply(lambda x: x[x>0].count()/len(x)) 

我得到的输出为:

a1 a2

a1
0 0.0 1.001 1.0 0.75

概率列加起来应该是1。我不明白为什么a2列的总概率加起来是1.75。其次,如何根据stackoverflow的需要,将python的输出格式化为表格格式。

以下链接给出了平均值:https://stackoverflow.com/a/43015011/2740831然而,如果IIUC概率是基于事件发生的计数。

在您的输出中是0.75,而不是1.75-解决方案应该通过布尔DataFrame:用mean简化

df1 = df["a2"].gt(0).groupby(df['a1']).mean().reset_index(name='prob')
print (df1)
a1  prob
0   0  1.00
1   1  0.75

df2 = df[["a1","a2"]].gt(0).groupby(df['a1']).mean()
print (df2)
a1    a2
a1           
0   0.0  1.00
1   1.0  0.75

相关内容

  • 没有找到相关文章

最新更新