2016-10-02 101 views
0

我想使用Target的第二列對此Excel文件進​​行排序。目標列在字符串和整數形式的數據按包含字符串和整數的列名對Excel文件進​​行排序

enter image description here

當我做一個排序上使用pandas.dataFrame.sort_values()功能的Excel文件,我得到的是這樣的:

enter image description here

此排序的順序是錯誤的,因爲Slide2.JPG,Slide3.JPG應該在Slide10.JPG之上等。

如何解決此問題?

回答

0

看來您在尋找human sorting。您可以使用Python中的正則表達式來處理這類問題。

import re 
def sort_nicely(l): 
    """ Sort the given list in the way that humans expect. 
    """ 
    convert = lambda text: int(text) if text.isdigit() else text 
    alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] 
    l.sort(key=alphanum_key) 

data=["Slide2.JPG","Slide21.JPG","Slide10.JPG","Slide3.JPG"] 
sort_nicely(data) 
print data 

返回:

['Slide2.JPG', 'Slide3.JPG', 'Slide10.JPG', 'Slide21.JPG'] 

作爲附文章中解釋

相關問題