逐行订购数据框列

时间:2020-02-14 11:45:46

标签: python pandas

我有一个看起来像这样的df

df = pd.DataFrame({'A' : ['1','2','3','7'],
                   'B' : [7,6,5,4],
                   'C' : [5,8,7,1],
                   'v' : [1,9,9,8]})
df=df.set_index('A')
df

    B   C   v
A           
1   7   5   1
2   6   8   9
3   5   7   9
7   4   1   8

我想对它进行排序,以便B和C列分别显示两者的较低和较高值,即

    B   C   v
A           
1   5   7   1
2   6   8   9
3   5   7   9
7   1   4   8

我可以在遍历每一行的for循环中执行此操作,但是我想知道是否有更好的方法?

1 个答案:

答案 0 :(得分:4)

如果性能很重要,请在axis=1中使用numpy.sort

df[['B','C']] = np.sort(df[['B','C']], axis=1)
print (df)
   B  C  v
A         
1  5  7  1
2  6  8  9
3  5  7  9
7  1  4  8