簡體   English   中英

如何按類別標簽或任何特定列對熊貓數據框進行排序/分組

[英]How to sort/ group a Pandas data frame by class label or any specific column

class col2 col3 col4 col5
1     4    5    5    5
4     4    4.5  5.5  6
1     3.5  5    6    4.5
3     3    4    4    4
2     3    3.5  3.8  6.1

我在示例中使用了假設數據。 實際的DataFrame的形狀為6680x1900。 我將這些數據聚類為50標記的類(1到50)。 如何按class標簽的升序對這些數據進行排序?

我試過了:

df.groupby([column_name_lst])["class"]

但是它失敗並顯示以下錯誤:

TypeError:您必須提供“按”和“級別”之一

如何解決這個問題呢? 預期輸出為:

class col2 col3 col4 col5
1     4    5    5    5
1     3.5  5    6    4.5
2     3    3.5  3.8  6.1
3     3    4    4    4
4     4    4.5  5.5  6

我認為如果classSeries則可以使用DataFrame.sort_values

print (type(df['class']))
<class 'pandas.core.series.Series'>


print (df.sort_values(by='class'))
   class  col2  col3  col4  col5
0      1   4.0   5.0   5.0   5.0
2      1   3.5   5.0   6.0   4.5
4      2   3.0   3.5   3.8   6.1
3      3   3.0   4.0   4.0   4.0
1      4   4.0   4.5   5.5   6.0

另外,如果需要groupby ,請使用參數by

print (df.groupby(by='class').sum())
       col2  col3  col4  col5
class                        
1       7.5  10.0  11.0   9.5
2       3.0   3.5   3.8   6.1
3       3.0   4.0   4.0   4.0
4       4.0   4.5   5.5   6.0

如果classindex ,請使用Kartik solution

print (df.index)
Int64Index([1, 4, 1, 3, 2], dtype='int64', name='class')

print (df.sort_index())
       col2  col3  col4  col5
class                        
1       4.0   5.0   5.0   5.0
1       3.5   5.0   6.0   4.5
2       3.0   3.5   3.8   6.1
3       3.0   4.0   4.0   4.0
4       4.0   4.5   5.5   6.0

另外,如果需要groupby ,請使用參數level

print (df.groupby(level='class').sum())
       col2  col3  col4  col5
class                        
1       7.5  10.0  11.0   9.5
2       3.0   3.5   3.8   6.1
3       3.0   4.0   4.0   4.0
4       4.0   4.5   5.5   6.0

index ,但第一個解決方案更好,因為更通用:

print (df.groupby(df.index).sum())
       col2  col3  col4  col5
class                        
1       7.5  10.0  11.0   9.5
2       3.0   3.5   3.8   6.1
3       3.0   4.0   4.0   4.0
4       4.0   4.5   5.5   6.0

如果您從問題中的數據開始:

 class col2 col3 col4 col5 1 4 5 5 5 4 4 4.5 5.5 6 1 3.5 5 6 4.5 3 3 4 4 4 2 3 3.5 3.8 6.1 

想要對其進行排序,則取決於'class'是索引還是列。 如果索引:

df.sort_index()

應該給你答案。 如果是專欄,請通過@jezarael回答

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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