Pandas pivot_table计算保证金份额

时间:2016-09-29 15:24:58

标签: python pandas pivot-table

我有一个名为Pandas的{​​{1}} DataFrame,其中包含df n。其中一个columns名为columns,显示COUNT中的值出现次数。 A包含唯一标识符,因此每行在A 1中的值为column。它看起来像这样:

COUNT

现在我想将 A B C D E COUNT id1 cat1 1 a 15 1 id2 cat2 2 b 14 1 id3 cat2 2 c 14 1 id4 cat1 1 d 15 1 id5 cat3 2 e 14 1 ..... 变换为:

df

我可以使用 14 15 cat1_tot NaN 2 cat1_share NaN 1 cat2_tot 2 NaN cat2_share 0.6666 NaN cat3_tot 1 NaN cat3_share 0.3333 NaN All 3 2

获取catx_tot
pd.pivot_table

但是如何在此添加分享?

1 个答案:

答案 0 :(得分:1)

groupby.sizegroupby.transform

合并
size = df.groupby(['B', 'E']).size()
sums = size.groupby(level='E').transform(np.sum)
aggd = pd.concat([size, size / sums], axis=1, keys=['total', 'share'])

aggd.unstack().stack(0)

enter image description here

获取All

all_ = aggd.groupby(level='E').sum().total.rename(('All', 'total'))
aggd.unstack().stack(0).append(all_)

enter image description here