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

2020-03-14 06:38:08 +08:00
 faketemp

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 列排序(不使用列名称)如何实现呢?

1127 次点击
所在节点    问与答
2 条回复
Procumbens
2020-03-14 07:45:12 +08:00
frame.sort_values(by=frame.columns[2])
faketemp
2020-03-14 08:05:12 +08:00
@Procumbens 测试了一下 果然奏效 谢谢

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

——这样直接使用 frame.columns[N-1] 就可以按第 N 列排序了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652670

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX