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

如何获取按另一列分组的列的出现百分比?python,python,pandas,percentage,Python,Pandas,Percentage,我试图根据相关国家计算一种产品(有数百种不同的产品)出现的百分比。我想在另一列上显示这个百分比 我设法在一张图表中完成了这项工作,但它在视觉上并不令人满意 我尝试了以下代码: df = data1.groupby('Country') df['percent'] = (df['Products'] / df['Products'].value_counts())*100 df 我收到以下错误消息: ValueError:操作数无法与形状(111,2)(4209,

我试图根据相关国家计算一种产品(有数百种不同的产品)出现的百分比。我想在另一列上显示这个百分比

我设法在一张图表中完成了这项工作,但它在视觉上并不令人满意

我尝试了以下代码:

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

我相信你把代码中不起作用的括号搞乱了:AttributeError:'DataFrameGroupBy'对象没有属性'groupby'请再次查看代码,它是
df.groupby()
而不是
gb.groupby