Pandas 数据透视表添加后续列,然后除以前一列

问题描述 投票:0回答:1

我有以下 pandas 数据透视表:

table = pd.pivot_table(df, index = 'group', columns = 'levels', values = 'uid', aggfunc = 'count', margins = True)

共有三个级别(级别 1、级别 2 和级别 3)。

基本上我有一些人通过了这些级别,但我想知道有多少人从一个级别晋升到下一个级别。

我想我需要两次转变:

  1. 添加后续列,以便我知道有多少人进入每个级别(即级别 1 = 级别 1 + 级别 2 + 级别 3;级别 2 = 级别 2 + 级别 3;级别 3 = 级别 3)
  2. 然后将每列除以前一列,即可了解从上一级别进步的人数百分比(即级别 1 = 级别 1 / 级别 1;级别 2 = 级别 2 / 级别 1;级别 3 = 级别 3 / 级别 2

非常感谢任何建议。谢谢!

初始表:

团体 1级 2级 3级
A组 5 6 3
B组 3 2 4

想要最终得到桌子:

团体 1级 2级 3级
A组 100% 64% 11%
B组 100% 67% 67%
pandas pivot-table
1个回答
0
投票

根据你的逻辑,你可以按行以相反的顺序取总和,然后除以:

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
© www.soinside.com 2019 - 2024. All rights reserved.