我想根据该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
答案 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