中混合聚集和分组

中混合聚集和分组

我所拥有的是一个名为“报告”的数据集,其中包含交付驱动程序的详细信息。 “通过”表示他们准时交货,“失败”表示他们没有准时交货

Name|Outcome
A   |Pass
B   |Fail
C   |Pass
D   |Pass
A   |Fail
C   |Pass


我想要的是

Name|Pass|Fail|Total
A   |1   |1   |2
B   |0   |1   |1
C   |2   |0   |2
D   |1   |0   |1


我试过了:

report.groupby(['Name','outcome']).agg(['count'])


但它没有给我所需的输出

非常感谢

最佳答案

crosstabmargins=Truemargins_name参数一起使用:

print (pd.crosstab(df['Name'], df['Outcome'], margins=True, margins_name='Total'))
Outcome  Fail  Pass  Total
Name
A           1     1      2
B           1     0      1
C           0     2      2
D           0     1      1
Total       2     4      6


然后用DataFrame.iloc删除最后一行的位置:

df = pd.crosstab(df['Name'], df['Outcome'], margins=True, margins_name='Total').iloc[:-1]
print (df)
Outcome  Fail  Pass  Total
Name
A           1     1      2
B           1     0      1
C           0     2      2
D           0     1      1

关于python - 在 Pandas 中混合聚集和分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58932190/

10-12 23:12