按Pandas列中的值排序

时间:2017-12-27 01:51:20

标签: python django pandas sorting

我在Pandas中将我的数据分组如下:

df.groupby(by = [' industry',' country',' category'])[' category']。 ()

在groupby之后,DataFrame看起来像这样:

---------------------------------------
 Industry   | Country | category |                      
---------------------------------------
 Oil    |  Portugal   |    0     |  14
                           1     |  4
                          None   |  7
           Germany    |    1     |  27
                           0     |  22
                          None   |  7
           Spain      |    1     |  12
                           0     |  1
---------------------------------------

 Gas    |  Ireland    |    1     |  2
                           0     |  11
                          None   |  1
           Italy      |    0     |  120
                           1     |  33
           Malta      |    1     |  3
                           0     |  4
                          None   |  7
           Turkey     |    0     |  355
                           1     |  44
---------------------------------------

但是,我想根据特定类别值的计数对数据进行排序。例如,按类别值的计数对其进行排序' 0'这样框架看起来像下面。请注意根据类别计数排序' 0' (22,14,1)和(355,120,11,4)。

---------------------------------------
 Industry   | Country | category |                      
---------------------------------------
 Oil    |  Germany   |     1     |  27
                           0     |  22
                          None   |  7
           Portugal   |    0     |  14
                           1     |  4
                          None   |  7
           Spain      |    1     |  12
                           0     |  1
---------------------------------------

 Gas    |  Turkey     |    0     |  355
                           1     |  44
           Italy      |    0     |  120
                           1     |  33
           Ireland    |    1     |  2
                           0     |  11
                          None   |  1
           Malta      |    1     |  3
                           0     |  4
                          None   |  7

---------------------------------------

我尝试使用像这样的unstack():

df.groupby(by=['industry', 'country', 'category'])['category'].count().unstack()

df.sort_values(by=['0'], ascending=[False])

然后尝试按“' 0'但是这个donot保护了原来的分组和索引。

我可以用熊猫来解决这个问题吗?请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

以下内容可以满足您的需求:

df = df.groupby(by=['industry', 'country', 'category'])['category'].count().reset_index()

df.sort_values(by='category', ascending=True, na_position='Last',inplace=True)