我的数据框有多列,我想将其中的3个从最小到最大排序
输入:
+----+--------+--------+--------+
| No | MinVal | MidVal | MaxVal |
+----+--------+--------+--------+
| 1 | 2 | 4 | 3 |
| 2 | 5 | 6 | 8 |
| 3 | 8 | 8 | 1 |
+----+--------+--------+--------+
期望的输出:
+----+--------+--------+--------+
| No | MinVal | MidVal | MaxVal |
+----+--------+--------+--------+
| 1 | 2 | 3 | 4 |
| 2 | 5 | 6 | 8 |
| 3 | 1 | 8 | 8 |
+----+--------+--------+--------+
所以我想在列MinVal
,MidVal
和MaxVal
之间交换值,以便从最低到最高排序。
我希望不使用循环来实现它,所以使用apply()
或其他函数。
谢谢:)
答案 0 :(得分:1)
您只需要sort
df=df.set_index('No')
df.values.sort(axis=1)
df
Out[212]:
MinVal MidVal MaxVal
No
1 2 3 4
2 5 6 8
3 1 8 8
更新
df[['MinVal','MidVal','MaxVal']]=np.sort(df[['MinVal','MidVal','MaxVal']].values,axis=1)
df
Out[215]:
No MinVal MidVal MaxVal
0 1 2 3 4
1 2 5 6 8
2 3 1 8 8