我有一个简单的数据框,如下所述。
如何计算在一个发生的概率Column_1
根据Column_2
与Column_3
?
Column_1
是一个结果(一个或零)。
Column_2
Column_3
是一种分类。
因此,第一行对于LM型居住在带有汽车的A号楼的人来说意味着1。
Column_1 Column_2 Column_3
1 A LM
1 B LO
0 C LP
1 D LM
0 A LK
1 A LM
如果我理解正确的结果可能是
LM LO LP LK
A .33 0
B .167
C 0
D .167
您可以使用pivot_table
:
print (df.pivot_table(index='Column_2',
columns='Column_3',
values='Column_1',
aggfunc='sum',
fill_value=0))
Column_3 LK LM LO LP
Column_2
A 0 2 0 0
B 0 0 1 0
C 0 0 0 0
D 0 1 0 0
用另一种解决方案groupby
和unstack
:
df1 = df.groupby(['Column_2','Column_3'])['Column_1'].sum().unstack(fill_value=0)
print (df1)
Column_3 LK LM LO LP
Column_2
A 0 2 0 0
B 0 0 1 0
C 0 0 0 0
D 0 1 0 0
最后你可以通过划分的-它的:div
length
index
length
df
print (df1.div(len(df.index)))
Column_3 LK LM LO LP
Column_2
A 0.0 0.333333 0.000000 0.0
B 0.0 0.000000 0.166667 0.0
C 0.0 0.000000 0.000000 0.0
D 0.0 0.166667 0.000000 0.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句