如何在pandas中对单行的列按值排序并保留对应列标签
实现方案
1. Python pandas 实现
适用于数据分析场景,代码逻辑简单直观:
import pandas as pd # 构造原始表格数据 df = pd.DataFrame( [[0.1, 0.2, 0, 0.7, 0.22, 0.11]], columns=['A','B','C','D','E','F'] ) # 列标签和对应数值配对后按数值降序排序 sorted_pairs = sorted(zip(df.columns, df.iloc[0]), key=lambda x: x[1], reverse=True) # 提取排序后的列顺序 sorted_cols = [i[0] for i in sorted_pairs] # 生成排序后的新表格 df_sorted = df[sorted_cols] # 输出验证 print(df_sorted)
2. Excel 实现
适合非代码场景的手动操作:
- 将原表格的表头和对应数值拆成两列:第一列存列标签
A/B/C/D/E/F,第二列存对应数值 - 选中两列数据,按第二列的数值做降序排序
- 把排序后的第一列作为新表头、第二列作为数据行,重新拼成表格即可
3. 原生JavaScript实现
适合前端场景直接修改HTML表格:
// 获取原始表格元素 const table = document.querySelector('.s-table') // 提取表头和对应数值 const headers = Array.from(table.querySelectorAll('thead th')).map(th => th.textContent) const values = Array.from(table.querySelectorAll('tbody td')).map(td => parseFloat(td.textContent)) // 标签数值配对后按数值降序排序 const sortedPairs = headers.map((h, idx) => [h, values[idx]]).sort((a, b) => b[1] - a[1]) // 重新渲染表格 table.querySelector('thead tr').innerHTML = sortedPairs.map(i => `<th>${i[0]}</th>`).join('') table.querySelector('tbody tr').innerHTML = sortedPairs.map(i => `<td>${i[1]}</td>`).join('')
内容的提问来源于stack exchange,提问作者Supperhero
相关产品推荐
相关产品推荐

