我有一个名为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
但是如何在此添加分享?
答案 0 :(得分:1)
将groupby.size
与groupby.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)
获取All
行
all_ = aggd.groupby(level='E').sum().total.rename(('All', 'total'))
aggd.unstack().stack(0).append(all_)