Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-将groupby返回值转换为所需的数据帧_Python_Python 3.x_Pandas - Fatal编程技术网

Python-将groupby返回值转换为所需的数据帧

Python-将groupby返回值转换为所需的数据帧,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试转换数据帧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

我正在尝试转换数据帧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(包含按百分比分组的值):

这是我的密码:

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
问题,但您需要规范化。使用交叉表

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

?如果您添加了
.unstack(1).fillna(0)
而不是
reset\u index()
,您将获得所需的输出。另外,我认为您的意思是
.sum()
而不是
.count()
作为聚合函数
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