按列名称处理熊猫数据框值

时间:2019-01-25 08:01:30

标签: python pandas

对于我的熊猫数据框,我想将所有值转换为值本身和列名的元组,例如,“ x”列中的“ a”值将变为(a,x)。我还没有遇到过这样做的体面方法。对于数据框df df [column]确实给出了列的名称,我无法检索到它。

总的来说,这与一个更大的问题有关,我也无法解决,如果有某种方法可以做到这一点,请告诉:我有一个测试回合行和列的数据框是测试的参与者,值是测试中的参与者分数。

例如:

       John Mary Peter
  1    9      3      3
  2    0      8      5
  3    3      1      4

我想将其组织成一个numpy数组,其中名称按测试中的分数排序,即

[[[约翰·玛丽·彼得] [玛丽·彼得·约翰] [彼得·约翰·玛丽]]

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

numpy.argsort降序排列,然后使用转换为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']]