我有以下 pandas 数据透视表:
table = pd.pivot_table(df, index = 'group', columns = 'levels', values = 'uid', aggfunc = 'count', margins = True)
共有三个级别(级别 1、级别 2 和级别 3)。
基本上我有一些人通过了这些级别,但我想知道有多少人从一个级别晋升到下一个级别。
我想我需要两次转变:
非常感谢任何建议。谢谢!
初始表:
团体 | 1级 | 2级 | 3级 |
---|---|---|---|
A组 | 5 | 6 | 3 |
B组 | 3 | 2 | 4 |
想要最终得到桌子:
团体 | 1级 | 2级 | 3级 |
---|---|---|---|
A组 | 100% | 64% | 11% |
B组 | 100% | 67% | 67% |
根据你的逻辑,你可以按行以相反的顺序取总和,然后除以:
d = df.iloc[:,::-1].cumsum(axis=1).iloc[:,::-1]
d.div(d.shift(axis=1).fillna(out))
输出:
Level 1 Level 2 Level 3
Groups
GroupA 1.0 0.642857 0.333333
GroupB 1.0 0.666667 0.666667