faketemp
V2EX  ›  问与答

pandas 或 numpy 都不支持按第 N 列排序吗?

  •  
  •   faketemp · Mar 14, 2020 · 1499 views
    This topic created in 2261 days ago, the information mentioned may be changed or developed.

    pandas 中的 dataframe 或 numpy 中的 array,排序时都要指定列名称才可以,比如

    dt = np.dtype([('name','S10'),('age',int)]) 
    a = np.array([("raju",21),("anil",25),("ravi",17),("amar",27)],dtype = dt)
    print (np.sort(a, order = 'name'))
    
    frame=pd.DataFrame([[2,4,1,5],[3,1,4,5],[5,1,4,2]],columns=['b','a','d','c'],index=['one','two','three'])
    print (frame.sort_values(by=['a','c']))
    

    但是取得的数据是否都有列名称不确定,想指定按照第 N 列 /行来排序,如果没有列名称的情况下怎么排序???
    拿上列中的 frame 来说,三行四列的数据,要按第 3 列排序(不使用列名称)如何实现呢?

    2 replies    2020-03-14 08:05:12 +08:00
    Procumbens
        1
    Procumbens  
       Mar 14, 2020   ❤️ 1
    frame.sort_values(by=frame.columns[2])
    faketemp
        2
    faketemp  
    OP
       Mar 14, 2020
    @Procumbens 测试了一下 果然奏效 谢谢

    之前测试时 frame.columns[2] 返回的是对应列名称,没想到对于默认没有 columns 和 index 的数据 pandas 会自动生成连续数字编号作为默认 columns 和 index

    ——这样直接使用 frame.columns[N-1] 就可以按第 N 列排序了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2765 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 10:18 · PVG 18:18 · LAX 03:18 · JFK 06:18
    ♥ Do have faith in what you're doing.