【发布时间】:2022-01-12 23:28:11
【问题描述】:
我有一个如下所示的数据框:
A B C D
0 5 4 3 2
1 4 5 3 2
2 3 5 2 1
3 4 2 5 1
4 4 5 2 1
5 4 3 5 1
...
我将数据框转换为二维数组,如下所示:
[[5 4 3 2]
[4 5 3 2]
[3 5 2 1]
[4 2 5 1]
[4 5 2 1]
[4 3 5 1]
...]
每一行的分数1-5实际上意味着人们给项目A, B, C, D打分。我想找出排名相同的人,例如人们认为A > B > C > D。我想根据这样的排名信息重新组合这些数组:
2DArray1: [[5 4 3 2]]
2DArray2: [[4 5 3 2]
[3 5 2 1]
[4 5 2 1]]
2DArray3: [[4 2 5 1]
[4 3 5 1]]
例如2DArray2 表示认为B > A > C > D 的人,2DArray3 是认为C > A > B > D 的人。我在 numpy 中尝试了不同的 sort functions,但我找不到合适的。我该怎么办?
【问题讨论】:
-
是什么让
2DArray3从第 5 行开始? -
@user17242583 其实我不关心组中的顺序只要他们有相同的排名顺序,所以对于 2DArrays3 我只需要
C > A > B >D但不关心里面的顺序组。 -
注意pandas有groupby,纯python有groupby,而numpy没有groupby。您从数据框开始,然后转换为 numpy 数组。你宁愿转换成 python 列表,还是继续使用 pandas 数据框?
标签: python arrays numpy sorting grouping