我有一些数据类似于:
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
然后进行排序,但不确定如何执行此操作,或者是否有更好的方法?
答案 0 :(得分:1)
您可以使用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
OR
>>> 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