2014-12-04 98 views
0

對包含文本且屬於數據類型對象,df.sort語法的pandas數據框中的列進行排序時,按照正確的順序對apple,orange,bananna進行排序。但是,如果我將水果列轉換爲分類數據類型,然後嘗試排序它不起作用。如何對熊貓數據框中的分類數據進行排序

有人可以分享如何對數據框中的分類數據進行排序。

我想首先按日期時間數據類型列排序,然後按類別數據類型列表排序,然後按浮點數或整型數字排序。

這(帳戶不是分類的)按month_date排序,它是datetime對象和帳戶(A-Z)正確。

#data['month_name'] = pd.Categorical(data['month_name'],categories=data.month_name.unique().tolist()) 
#data['account'] = pd.Categorical(data['account'],categories=data.account.unique().tolist()) 
column_list = data.columns.values.tolist() 
sorted_data = data.sort(["month_date","account"], ascending=True) 
display(sorted_data) 

  • 蘋果
  • Bananna
  • 胡蘿蔔

這(其中帳戶是絕對)不正確排序(注意pd.categorical數據不再註釋掉)

data['month_name'] = pd.Categorical(data['month_name'],categories=data.month_name.unique().tolist()) 
data['account'] = pd.Categorical(data['account'],categories=data.account.unique().tolist()) 
column_list = data.columns.values.tolist() 
sorted_data = data.sort(["month_date","account"], ascending=True) 
display(sorted_data) 

  • 蘋果
  • 胡蘿蔔
  • Bananna
+1

你必須表現出你在做什麼(複製pastable代碼) – Jeff 2014-12-04 02:16:03

+0

我沒有表現出一個典型例,我有一個數據框有三列,第一個是日期時間,第二個是分類數據,我想按日期時間排序,然後是分類。所以它會是2014-06-01,蘋果2014-06-01,bananna,2014-07-01菠蘿。 – yoshiserry 2014-12-04 02:19:20

+1

顯示實際的代碼,讓人們看起來更容易。並應該是複製/可以粘貼的。 – Jeff 2014-12-04 02:30:25

回答

1

你的類本身不是一個保證的順序。 unique不保證任何順序。他們將在列出的順序(不清楚他們有什麼價值在你的例子)

In [7]: df = DataFrame({'A' : pd.Categorical(list('bbeebbaa'),categories=['e','a','b']), 'B' : np.arange(8) }) 

In [8]: df 
Out[8]: 
    A B 
0 b 0 
1 b 1 
2 e 2 
3 e 3 
4 b 4 
5 b 5 
6 a 6 
7 a 7 

In [9]: df.dtypes 
Out[9]: 
A category 
B  int64 
dtype: object 

In [10]: df.sort(['A','B']) 
Out[10]: 
    A B 
2 e 2 
3 e 3 
6 a 6 
7 a 7 
0 b 0 
1 b 1 
4 b 4 
5 b 5 

In [11]: df.sort(['A','B'],ascending=False) 
Out[11]: 
    A B 
5 b 5 
4 b 4 
1 b 1 
0 b 0 
7 a 7 
6 a 6 
3 e 3 
2 e 2 
+0

我知道unique()不排序數據,它只是獲取列中的唯一值。據我瞭解,類別應該按照我的df.sort定義的順序,但是當我顯示數據框時,它們不按順序顯示。也是分類的Month_name也不以正確的順序顯示。我按month_date排序,預計按照「六月」,「七月」,「八月」,「九月」,「十月」的順序查看我的海豹圖的x軸,但是我看到的是八月,七月,六月,十月,九月。 – yoshiserry 2014-12-04 03:11:09

+1

df的順序將是您的代碼中的類別順序,這些類別由唯一的代碼完成,並且沒有已定義的順序 – Jeff 2014-12-04 03:38:55

+0

Jeff我們如何開始聊天? – yoshiserry 2014-12-04 03:42:37

相關問題