为了账号安全,请及时绑定邮箱和手机立即绑定

python 数据透视表中的总值

python 数据透视表中的总值

慕哥9229398 2023-05-23 10:41:12
我的原始数据框类似于下面的数据框:df= pd.DataFrame({'Variation' : ['A']*5 + ['B']*3 + ['A']*4,                   'id': [11]*4 + [12] + [15]*2 + [17] + [20]*4,                 'steps' : ['start','step1','step2','end','end','step1','step2','step1','start','step1','step2','end']})我想从这个数据框创建一个数据透视表,我使用了下面提到的代码:df1=df.pivot_table(index=['Variation'], columns=['steps'],                           values='id', aggfunc='count', fill_value=0)但是,我也想查看 id 的总不同计数。有人可以让我知道如何实现这一目标吗?我的预期输出应该是:| Variation | Total id | Total start | Total step1 | Total step2 | Total end ||-----------|----------|-------------|-------------|-------------|-----------|| A         | 3        | 2           | 2           | 2           | 3         || B         | 2        | 0           | 2           | 1           | 0         |
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

使用SeriesGroupBy.nunique

df1 = df1.join(df.groupby('Variation')['id'].nunique().rename('Total id'))

print(df1)

           end  start  step1  step2  Total id

Variation                                    

A            3      2      2      2         3

B            0      0      2      1         2

如果之后需要列Variation:


c = ['id'] + df['steps'].unique().tolist()

df1 = (df1.join(df.groupby('Variation')['id'].nunique())

          .reindex(columns=c)

          .add_prefix('Total ')

          .reset_index()

          .rename_axis(None, axis=1))


print(df1)

  Variation  Total id  Total start  Total step1  Total step2  Total end

0         A         3            2            2            2          3

1         B         2            0            2            1          0


查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信