首页 > 解决方案 > 如何获取按另一列分组的列出现的百分比?Python

问题描述

我正在尝试根据相关国家/地区计算产品(具有数百种不同产品)的出现百分比。我希望这个 % 显示在另一列

我设法在图表中做到了,但它在视觉上并不令人愉悦。

我尝试了以下代码:

df = data1.groupby('Country')
df['percent'] = (df['Products'] /
                df['Products'].value_counts())*100
df

我收到以下错误消息:“ValueError:操作数无法与形状 (111,2) (4209,) 一起广播”

我还通过修改它以适合我的数据框尝试了类似以下的操作,但没有成功。

gb = df.groupby("country")
gb['result'].agg(lambda x: len(x[x=="Fail"]) / len(x)).sort_values(by="% fail", ascending=False)

总而言之,我想要一些看起来像这样的东西:

   Countries    Products     Percentage
0  Country 1     Product 1     0.5
1  Country 1     Product 2     0.01
2  Country 2     Product 1     0.2
3  Country 2     Product 2     0.05

等等。

预先感谢您的帮助!

标签: pythonpandaspercentage

解决方案


我想你想要:

df['percent'] = df.groupby('Country')['Products'].value_counts(normalize=True) * 100

推荐阅读