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

时间:2018-10-10 16:31:35

标签: python pandas

我有一些数据类似于:

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

然后进行排序,但不确定如何执行此操作,或者是否有更好的方法?

1 个答案:

答案 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

OR

>>> 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