我在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保护原始分组和索引。
我可以用熊猫来解决这个问题吗?请帮忙。谢谢。
以下内容适用于您所需的内容:
df = df.groupby(by=['industry', 'country', 'category'])['category'].count().reset_index()
df.sort_values(by='category', ascending=True, na_position='Last',inplace=True)