我正在尝试转换数据框A

数据框A

App_ID  Review_Rating   Grouping
 4        3              Low
13        2              Low
13        2              Low
20        2              Low
20        4              High
8         1              Low
8         1              Low
8         1              Low
15        4              High
7         3              Low
4         3              Low
4         3              Low
4         3              Low
4         3              Low
4         5              High
7         5              High
15        3              Low


放入数据框B(其中包含按百分比分组的值):

App_ID    Percentage of Grouping
          Low     High
4         75      25
13        100     0
20        33      67
8         100     0
15        42.8    57.14
7         37.5    62.5


这是我的代码:

dataframeB=(dataframeA.groupby(['App_ID','Grouping'])['Review_Rating'].count()/dataframeA.groupby('App_ID')['Review_Rating'].count()*100).reset_index()


但是,它没有提供所需的输出。我的代码输出:

App_ID   Grouping   Review_Rating
4        Low        75
4        High       25
13       Low        100
13       High       0
20       Low        33
20       High       67
8        Low        100
8        High       0
15       Low        42.8
15       High       57.14
7        Low        37.5
7        High       62.5


寻找您的帮助以纠正此问题。提前致谢

最佳答案

非常接近pivot问题,但是您需要规范化。使用crosstab

pd.crosstab(df.App_ID,df.Grouping,df.Review_Rating,aggfunc='sum',normalize ='index')*100
Out[90]:
Grouping       High         Low
App_ID
4         25.000000   75.000000
7         62.500000   37.500000
8          0.000000  100.000000
13         0.000000  100.000000
15        57.142857   42.857143
20        66.666667   33.333333

10-06 05:17
查看更多