Python 处理每个列名的数据帧值

Python 处理每个列名的数据帧值,python,pandas,Python,Pandas,对于我的pandas dataframe,我想将所有值转换为值本身和列名的元组,例如,列“x”中的值“a”将变成(a,x)。我还没有找到一个像样的方法来做这件事。因为dataframe df[column]没有给出列的名称,所以我无法检索它 总的来说,这与一个更大的问题有关,我也没能解决这个问题,如果有一个严格的方法来解决这个问题,请告诉我:我有一个测试轮次行的数据框,列是测试的参与者,值是参与者在测试中的分数 例如: John Mary Peter 1 9 3

对于我的pandas dataframe,我想将所有值转换为值本身和列名的元组,例如,列“x”中的值“a”将变成(a,x)。我还没有找到一个像样的方法来做这件事。因为dataframe df[column]没有给出列的名称,所以我无法检索它

总的来说,这与一个更大的问题有关,我也没能解决这个问题,如果有一个严格的方法来解决这个问题,请告诉我:我有一个测试轮次行的数据框,列是测试的参与者,值是参与者在测试中的分数

例如:

       John Mary Peter
  1    9      3      3
  2    0      8      5
  3    3      1      4
我想把它组织成一个numpy数组,在这个数组中,名字是按照他们在测试中的分数排序的

[John Mary Peter][Mary Peter John][Peter John Mary]]

有什么想法吗?

按降序排列位置,然后使用转换为numpy数组的列名进行广播:

arr = df.columns.values[(-df.values).argsort(axis=1)]
print (arr)
[['John' 'Mary' 'Peter']
 ['Mary' 'Peter' 'John']
 ['Peter' 'John' 'Mary']]
或:

arr = df.columns.values[df.values.argsort(axis=1)[:, ::-1]]
print (arr)
[['John' 'Peter' 'Mary']
 ['Mary' 'Peter' 'John']
 ['Peter' 'John' 'Mary']]