[英]python pandas sorting by group
我的DataFrame中的每一行都是餐廳的用戶投票項。 數據看起來像
id cuisine
91 american
3 american
91 american
233 cuban
233 cuban
2 cuban
其中id
是指餐廳。
我想得到類似以下內容
american 91 100
3 30
12 10
cuban 233 80
2 33
mexican 22 99
8 98
21 82
其中第二列是id
,第三列是該id
在DataFrame中的行數。 換句話說,按行數排序,但按美食分組。 我試過了
g = df.groupby(['cuisine', 'id'])
c = g.size().sort_values(ascending=False)
但是美食的順序是混雜的。
那是你要的嗎?
In [2]: df
Out[2]:
id cuisine
0 91 american
1 3 american
2 91 american
3 233 cuban
4 233 cuban
5 2 cuban
In [3]: df.groupby(['cuisine', 'id']).size()
Out[3]:
cuisine id
american 3 1
91 2
cuban 2 1
233 2
dtype: int64
或作為數據框:
In [10]: df.groupby(['cuisine', 'id']).size().reset_index(name='count').sort_values(['cuisine', 'count'], ascending=[1,0])
Out[10]:
cuisine id count
1 american 91 2
0 american 3 1
3 cuban 233 2
2 cuban 2 1
在group_by
之后使用value_counts
,后跟sort_index
# ascending=[1, 0] says True for level[0], False for level[1]
df.groupby('cuisine').id.value_counts().sort_index(ascending=[1, 0])
cuisine id
american 91 2
3 1
cuban 233 2
2 1
Name: id, dtype: int64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.