gpt4 book ai didi

python - Pandas pivot_table 计算 margin 份额

转载 作者:行者123 更新时间:2023-11-28 18:28:05 25 4
gpt4 key购买 nike

我有一个名为 dfPandas DataFrame,它包含 n 之一名为COUNT,它显示A 中的值出现了多少次。 A 包含唯一标识符,因此每一行在 column COUNT 中的值为 1。它看起来像这样:

 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

我可以使用 pd.pivot_table 获取 catx_tot

pd.pivot_table(
df,
values='COUNT',
index=['B'],
columns=['E'],
margins=True,
aggfunc=np.sum
)

但是我该如何添加共享呢?

最佳答案

结合 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

关于python - Pandas pivot_table 计算 margin 份额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39774314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com