Python 按占总数的百分比划分

Python 按占总数的百分比划分,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,对于学校项目,我需要实现以下功能 制作一个函数select(df,col1,col2),该函数接受一个数据帧和两个列标签,并输出一个多索引序列,其中包含给定col1值的col2可能值出现的分数 例如select(df_测试,'你曾经赌博吗?','彩票类型')会产生 No risk yes 0.433099 risk no 0.566901 Yes risk

对于学校项目,我需要实现以下功能

制作一个函数
select(df,col1,col2)
,该函数接受一个数据帧和两个列标签,并输出一个多索引序列,其中包含给定col1值的col2可能值出现的分数

例如
select(df_测试,'你曾经赌博吗?','彩票类型')
会产生

No                   risk yes        0.433099
                     risk no         0.566901
Yes                  risk yes        0.548872
                     risk no         0.451128
请注意,彩票类型:风险是+彩票类型:风险否的总和为1.0

这是一个大得多的数据帧,但我设法使用
gr=df.groupby([col1,col2],as_index=True)对其进行分组并聚合到一个点。count()
这导致了下面的小数据帧

        Do you ever smoke cigarettes?   Do you ever drink alcohol?  Have you ever been skydiving?   Do you ever drive above the speed limit?    Have you ever cheated on your significant other?    Do you eat steak?   How do you like your steak prepared?    Gender  Age Household Income    Education   Location (Census Region)
Do you ever gamble? Lottery Type                                                
No  risk no 155 157 156 157 155 157 121 147 147 121 147 145
risk yes    120 120 120 119 120 120 89  117 117 94  116 117
Yes risk no 114 114 113 113 114 114 99  110 110 96  109 110
risk yes    141 142 141 142 142 141 116 133 133 113 133 133

代码看起来很凌乱,所以这是上面DF的图像。所以我的问题是,我怎样才能把说不吸烟的人的百分比和吸烟的人的百分比加起来。我尝试使用自定义聚合函数,但我不明白。使用下面的函数只会抛出一个类型错误。
.agg(λx:sum(x)/len(x))


TypeError:不支持+:'int'和'str'的操作数类型

请查看pivot\u表。有一个很好的例子,说明如何使用pivot_表对总计进行求和,然后将结果除以该总计并乘以100

group = pd.pivot_table(df, 
                       ...
                       aggfunc=np.sum)
          .div(len(df.index))
          .mul(100)