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

问题描述 投票:0回答:1

我有一些数据:

Person  Score1  Score2
A   1   4
B   2   5
C   3   6

最终目标是从原始矩阵中的所有可能值中将人员和分数的组合从最高到最低排序

我的想法是使用Python / Pandas创建一个数据集/变量,将其转换为:

Person  Score
A-Score1    1
A-Score2    4
B-Score1    2
B-Score2    5
C-Score1    3
C-Score2    6

然后做一个但不知道如何做或者有更好的方法吗?

python pandas
1个回答
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

要么

>>> 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
© www.soinside.com 2019 - 2024. All rights reserved.