V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
faketemp
V2EX  ›  问与答

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

  •  
  •   faketemp · 2020-03-14 06:38:08 +08:00 · 1136 次点击
    这是一个创建于 1745 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 条回复    2020-03-14 08:05:12 +08:00
    Procumbens
        1
    Procumbens  
       2020-03-14 07:45:12 +08:00   ❤️ 1
    frame.sort_values(by=frame.columns[2])
    faketemp
        2
    faketemp  
    OP
       2020-03-14 08:05:12 +08:00
    @Procumbens 测试了一下 果然奏效 谢谢

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

    ——这样直接使用 frame.columns[N-1] 就可以按第 N 列排序了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6108 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 02:22 · PVG 10:22 · LAX 18:22 · JFK 21:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.