代码之家  ›  专栏  ›  技术社区  ›  Simplicity

Excel行的升序

  •  0
  • Simplicity  · 技术社区  · 7 年前

    我在Excel中有以下行:

    enter image description here

    Python (即,注意以12开头的行如何位于以118开头的行之前)。

    我认为熊猫图书馆将是一个起点?任何线索都将不胜感激。

    谢谢

    2 回复  |  直到 7 年前
        1
  •  3
  •   Jose Angel Sanchez    7 年前

    首先读取excel文件

    df = pd.read_excel("your/file/path/file.xls")
    df
             data   
    0  1212.i.jpg  
    1   121.i.jpg  
    2   212.i.jpg  
    3   512.i.jpg  
    
    

    假设列名为“data”

    df["sub"] = df["data"].str[:-6]
    

    以防万一,将新列转换为int类型

    df["sub"] = df["sub"].astype(int)
    
    

    现在按新列对值进行排序

    df.sort_values("sub", inplace=True)
    

    最后,如果您只需要原始数据:

    df = df["data"]
    
    
    1     121.i.jpg
    2     212.i.jpg
    3     512.i.jpg
    0    1212.i.jpg
    
        2
  •  2
  •   BENY    7 年前

    使用 natsorted

    from natsort import natsorted
    df.data=natsorted(df.data)
    df
    Out[129]: 
             data
    0   121.i.jpg
    1   212.i.jpg
    2   512.i.jpg
    3  1212.i.jpg
    

    保留原始数据索引

    df.loc[natsorted(df.index,key=lambda x : df.data[x] )]
    Out[138]: 
             data
    1   121.i.jpg
    2   212.i.jpg
    3   512.i.jpg
    0  1212.i.jpg
    

    argsort 具有 split

    df.iloc[np.argsort(df.data.str.split('.').str[0].astype(int))]
    Out[141]: 
             data
    1   121.i.jpg
    2   212.i.jpg
    3   512.i.jpg
    0  1212.i.jpg
    
    推荐文章