根据每一行中的值交换列

时间:2019-07-12 04:31:20

标签: python pandas

我想根据该ID对应的值交换列。

我用过sort.index(level = 0, axis =0)

x = pd.DataFrame({'id': ['1000'], 'P1': [60], 'P2': [25], 'P3': [10], 'P4': [35]})
y = pd.DataFrame({'id': ['1001'], 'P1': [40], 'P2': [30], 'P3': [15], 'P4': [55]})
x.sort_index(level = 0, axis = 0)

实际结果:

id P1 P2 P3 P4

1000 60 25 10 35

预期结果:

id   P1  P4  P2 P3

1000  60 35 25 10

2 个答案:

答案 0 :(得分:0)

当我查看数据时,我假设列“ id”将是您要为其添加列的索引,因此最好的方法是首先为您设置索引,并使用轴= 1将它们按值排序该代码如下所示。

x = x.set_index('id')
x.sort_values(by ='1000', axis=1)

答案 1 :(得分:0)

'id': ['1000']的str转换为'id': [1000]的int类型,如果不进行更改并使用sort_values()函数对行值进行排序,则会抛出错误not supported between instances of 'numpy.ndarray' and 'str'

axis=1用于按行排序,设置ascending=False,而by=0是行索引

import pandas as pd

x = pd.DataFrame({'id': [1000], 'P1': [60], 'P2': [25], 'P3': [10], 'P4': [35]})
print (x.sort_values(by=0, axis=1, ascending=False))

O / P:

     id  P1  P4  P2  P3
0  1000  60  35  25  10