Python 熊猫:按两列分组,然后按第三列的值排序
我有以下几行:Python 熊猫:按两列分组,然后按第三列的值排序,python,pandas,sorting,dataframe,pandas-groupby,Python,Pandas,Sorting,Dataframe,Pandas Groupby,我有以下几行: genre\u df.groupby(['release\u year','genres'])。投票\u average.mean() 这给了我以下信息: release_year genres 1960 Action 6.950000 Adventure 7.150000 Comedy 7.900000
genre\u df.groupby(['release\u year','genres'])。投票\u average.mean()
这给了我以下信息:
release_year genres
1960 Action 6.950000
Adventure 7.150000
Comedy 7.900000
Drama 7.600000
Fantasy 7.300000
History 6.900000
Horror 8.000000
Romance 7.600000
Science Fiction 7.300000
Thriller 7.650000
Western 7.000000
1961 Action 7.000000
Adventure 6.800000
Animation 6.600000
Comedy 7.000000
Crime 6.600000
Drama 7.000000
Family 6.600000
History 6.700000
Music 6.600000
Romance 7.400000
War 7.000000
...
我想看到的是df按发布年份和类型分组,但首先按最高平均投票率排序
又名:
如何实现这一点?解决方案-首先创建一列数据帧,然后:
对于较旧版本的熊猫,必须:
试试这个:
genre_df = genre_df.reset_index()
genre_df.sort_values(['vote_average'],ascending=False)
df = df.to_frame().sort_values(['release_year','vote_average'], ascending=[True, False])
print (df)
vote_average
release_year genres
1960 Horror 8.00
Comedy 7.90
Thriller 7.65
Drama 7.60
Romance 7.60
Fantasy 7.30
Science Fiction 7.30
Adventure 7.15
Western 7.00
Action 6.95
History 6.90
1961 Romance 7.40
Action 7.00
Comedy 7.00
Drama 7.00
War 7.00
Adventure 6.80
History 6.70
Animation 6.60
Crime 6.60
Family 6.60
Music 6.60
df = (df.reset_index()
.sort_values(['release_year','vote_average'], ascending=[True, False])
.set_index(['release_year','genres']))
genre_df = genre_df.reset_index()
genre_df.sort_values(['vote_average'],ascending=False)