在根据用例计算组的概率时,我无法理解输出。我有兴趣计算概率,例如,在下面的数据帧中,按a2
的a1
概率分组
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.00
1 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