我正在尝试转换数据帧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
正在寻求您的帮助以解决此问题。预先感谢
答案 0 :(得分:2)
非常接近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