2016-12-12 129 views
1

尋求正確的方法來訂購我的sales列,以便表示的範圍從最小到最大。熊貓:在數據框中排序

我一直在使用pandas.df.sort_values(by='sales'),但輸出不是順序的。

在此先感謝您的幫助!

當前DF:DF1

 sales   team  
0 950 to 1000  J 
1 10 to 20  K 
2 4000 to 5000 L 
3 60 to 100  M 
4 0 to 9   N 

期望DF:DF2

 sales   team  
0 0 to 9   N 
1 10 to 20  K 
2 60 to 100  M  
3 950 to 1000  J 
4 4000 to 5000 L 
+0

不是一個真正的答案,所以一個評論就足夠了 - 但有了這樣的數據,你應該創建一個映射到整數,這對於這種情況下有一個排序順序行爲,因此映射。你永遠不想做特別是熊貓數據框的字符串匹配! – Chinny84

回答

3

你可以嘗試這樣的事情(排序從銷售列中提取的第一個數字和):

df.loc[df.sales.str.split(" ").str[0].astype(int).argsort()] 

# sales  team 
#4 0 to 9   N 
#1 10 to 20  K 
#3 60 to 100  M 
#0 950 to 1000  J 
#2 4000 to 5000 L 

str.extract()的另一個選項:

df.loc[df.sales.str.extract("^(\d+)").astype(int).argsort()] 
+0

第二個選項非常有效。謝謝,@Psidom! – Levine