You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于DataFrame行内降序值动态重排Pandas列?

Pandas实现按行内数值降序重排列动态列

问题描述

需要对Pandas DataFrame的列按每行内数值降序重新排列,列由API动态生成,无法通过指定固定列名的df.sort_values(by='column_name')方法实现。

原DataFrame:

JSWINFRA    GUFICBIO        HARIOMPIPE  
3           4               4           
1           3               3           
0           0               1           
4           1               0

期望重排结果:

HARIOMPIPE  GUFICBIO        JSWINFRA    
4           4               3           
3           3               1           
1           0               0           
0           1               4

实现方法

可以利用apply方法逐行处理,结合argsort获取每行数值降序对应的列索引,再按该索引重新排列列:

import pandas as pd

# 构造示例DataFrame(实际场景可直接使用API返回的DataFrame)
df = pd.DataFrame({
    'JSWINFRA': [3, 1, 0, 4],
    'GUFICBIO': [4, 3, 0, 1],
    'HARIOMPIPE': [4, 3, 1, 0]
})

# 按行内数值降序重排列列
df_sorted = df.apply(lambda row: row.iloc[row.argsort()[::-1]], axis=1)

print(df_sorted)

代码说明

  • row.argsort():返回每行数值升序排列的索引位置,[::-1]反转后得到降序索引。
  • row.iloc[row.argsort()[::-1]]:根据降序索引重新排列该行的元素顺序。
  • axis=1:指定apply按行维度执行处理,完全适配动态生成的列,无需指定固定列名。

内容的提问来源于stack exchange,提问作者Amal Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 19:27:03