如何获取按另一列分组的一列出现的百分比?蟒蛇

问题描述

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

我设法在图形中做到了,但是视觉上并不令人满意。

我尝试了以下代码

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

以此类推。

预先感谢您的帮助!

解决方法

我想你想要

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...