我有一些数据如下:
Person Score1 Score2
A 1 4
B 2 5
C 3 6
最终目标是从原始矩阵中的所有可能值中从最高到最低对 Person 和 Score 的组合进行排序
我的想法是使用 Python/Pandas 创建一个数据集/变量,将其转换为:
Person Score
A-Score1 1
A-Score2 4
B-Score1 2
B-Score2 5
C-Score1 3
C-Score2 6
然后进行排序,但不确定如何做到这一点,或者是否有更好的方法?
你可以用df.melt
您需要的数据:
>>> df
Person Score1 Score2
0 A 1 4
1 B 2 5
2 C 3 6
>>> pd.melt(df, id_vars=["Person"]).sort_values('Person')
Person variable value
0 A Score1 1
3 A Score2 4
1 B Score1 2
4 B Score2 5
2 C Score1 3
5 C Score2 6
或
>>> df
Person Score1 Score2
0 A 1 4
1 B 2 5
2 C 3 6
>>>
>>>
>>> df.melt('Person')
Person variable value
0 A Score1 1
1 B Score1 2
2 C Score1 3
3 A Score2 4
4 B Score2 5
5 C Score2 6
或
>>> pd.melt(df, id_vars=['Person'], value_vars=['Score1', 'Score2'])
Person variable value
0 A Score1 1
1 B Score1 2
2 C Score1 3
3 A Score2 4
4 B Score2 5
5 C Score2 6