簡體   English   中英

python pandas按組排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM