根据列对数据帧进行Argsort
我有以下数据帧:
| 用户身份 | 列_1 | 列_2 | 第 3 列 |
|---|---|---|---|
| 一种 | 4.959 | 3.231 | 1.2356 |
| 乙 | 0.632 | 0.963 | 2.4556 |
| C | 3.234 | 7.445 | 5.3435 |
| D | 1.454 | 0.343 | 2.2343 |
回答
您可以np.argsort在轴 1 上使用。然后使用numpy indexing转换df.columns为numpy数组。pd.Index.to_numpy
df = df.set_index('userId') # If userId is not index already.
idx = df.values.argsort(axis=1)
out = pd.DataFrame(df.columns.to_numpy()[idx], index=df.index)
0 1 2
userId
A column_3 column_2 column_1
B column_1 column_2 column_3
C column_1 column_3 column_2
D column_2 column_1 column_3