按Pandas列中的值排序

问题描述 投票:0回答:1

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

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

在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保护原始分组和索引。

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

python django pandas sorting
1个回答
0
投票

以下内容适用于您所需的内容:

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

df.sort_values(by='category', ascending=True, na_position='Last',inplace=True)
© www.soinside.com 2019 - 2024. All rights reserved.