如何不使用if条件按值对dataframe的14列非行式降序原位排序
实现代码
直接用pandas自带的排序方法即可满足所有要求,全程不改动行顺序、不新增列、支持原位修改:
import pandas as pd # 示例数据初始化 col_name = ['Atelectasis', 'Cardiomegaly', 'Consolidation', 'Edema', 'Effusion', 'Emphysema', 'Fibrosis', 'Hernia', 'Infiltration', 'Mass', 'Nodule', 'Pleural_Thickening', 'Pneumonia', 'Pneumothorax'] prob_list = [0.2268, 0.0717, 0.2414, 0.0845, 0.2153, 0.2802, 0.3154, 0.2922, 0.1558, 0.3638, 0.2032, 0.1259, 0.2359, 0.4329] # 生成带指定列名的DataFrame df = pd.DataFrame([prob_list], columns=col_name) # 核心排序逻辑 df.sort_values(by=df.index[0], axis=1, ascending=False, inplace=True) # 验证输出 print("排序后列顺序:", df.columns.tolist()) print("排序后数据:\n", df)
参数说明
by=df.index[0]:指定按第一行的数值作为排序依据,适配单条预测结果的场景。如果是多条预测需要按列均值排序,替换为by=df.mean()即可axis=1:指定排序维度为列,完全不会修改原有行的顺序ascending=False:设置为降序,列数值越大排列越靠左inplace=True:直接修改原DataFrame,不需要额外创建新对象,也不会新增任何列
内容的提问来源于stack exchange,提问作者Engr Ali
相关产品推荐
相关产品推荐

