python 中枢轴 table 中的总值
Total values in a pivot table in python
我的原始数据框与下面的类似:
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']})
我想从这个数据框创建一个枢轴table,我使用了下面提到的代码:
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 |
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
我的原始数据框与下面的类似:
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']})
我想从这个数据框创建一个枢轴table,我使用了下面提到的代码:
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 |
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