2016-12-12 130 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