我下载了kickstarter dataset from kaggle,现在我希望看到最受欢迎的类别与3种不同的状态分开('成功','失败',& #39;取消')我希望获得像
这样的输出ks.groupby(['main_category','state']).count().sort_values('name', ascending=False)
我尝试了Film & Video failed 29653 29652 29653
Music successful 21763 21763 21763
Film & Video successful 21404 21404 21404
Publishing failed 19920 19920 19920
Music failed 19193 19193 19193
Technology failed 16347 16347 16347
Food failed 13602 13602 13602
,但是对原始数字进行了分类:
state
我不确定如何对java.lang.NoSuchMethodError: No virtual method startRanging(Landroid/net/wifi/rtt/RangingRequest;Ljava/util/concurrent/Executor;Landroid/net/wifi/rtt/RangingResultCallback;)V in class Landroid/net/wifi/rtt/WifiRttManager; or its super classes (declaration of 'android.net.wifi.rtt.WifiRttManager' appears in /system/framework/framework.jar)
上的总计数和子顺序进行排序。我尝试对多列进行排序,但主要的排序是绝对数字。
答案 0 :(得分:1)
这是一个解决方案:
ks.groupby(['main_category','state']).count()[["name"]].reset_index().sort_values(["main_category","name"], ascending=False)
在groupby
和count
之后,您需要reset_index
然后sort_values
。
这是我的输出:
答案 1 :(得分:0)
我相信我解决了它。不确定它是否是最优雅的解决方案,但它提供了最受欢迎的main_categories。首先,我需要在一个单独的新列中broadcast
totals_per_main_category:
ks['total']=ks.groupby('main_category').transform('count')['ID']
然后我需要groupby('total', 'main_category', 'state')
,然后是Yilun回答中提到的reset_index
。
ks.groupby(['total','main_category','state']).count().reset_index().sort_values(['total','ID'], ascending=False)