我在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保护了原来的分组和索引。
我可以用熊猫来解决这个问题吗?请帮忙。感谢。
答案 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)