对于我的熊猫数据框,我想将所有值转换为值本身和列名的元组,例如,“ x”列中的“ a”值将变为(a,x)。我还没有遇到过这样做的体面方法。对于数据框df df [column]确实给出了列的名称,我无法检索到它。
总的来说,这与一个更大的问题有关,我也无法解决,如果有某种方法可以做到这一点,请告诉:我有一个测试回合行和列的数据框是测试的参与者,值是测试中的参与者分数。
例如:
John Mary Peter
1 9 3 3
2 0 8 5
3 3 1 4
我想将其组织成一个numpy数组,其中名称按测试中的分数排序,即
[[[约翰·玛丽·彼得] [玛丽·彼得·约翰] [彼得·约翰·玛丽]]
有什么想法吗?
答案 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']]