python中数据透视表中的总值

Posted

技术标签:

【中文标题】python中数据透视表中的总值【英文标题】:Total values in a pivot table in python 【发布时间】:2020-12-05 01:21:46 【问题描述】:

我的原始数据框类似于下面的:

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】:

使用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
    

【讨论】:

如何过滤数据透视表中的值?假设,我想过滤变体 A 的“总结束”值并将其存储在一个新变量中。所以我的预期结果是new_var=3 @hk2 - 最简单的是从第二个解决方案中删除.reset_index() .rename_axis(None, axis=1),然后使用new_var = df1.loc['Variation A','Total end']

以上是关于python中数据透视表中的总值的主要内容,如果未能解决你的问题,请参考以下文章

如何删除透视表中的很多汇总行

从 R 中的数据透视表库呈现的数据透视表中删除小计和总计

c# Excel 数据透视表中的折叠字段

excel如何将数据透视表中的汇总项去掉?

excel中数据透视表,如何将空白的地方隐藏掉

从数据透视表中显示刀片中的数据