将行信息与列标题组合以创建一个变量



我有一些数据如下:

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

最新更新