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

基于行观测调整列顺序及数据排序的技术求助

解决方案:按指定规则排序行和列

没问题,我给你分两种常用工具的实现方案,你可以根据自己的场景选择:


Excel 操作步骤

1. 按「Total_by_hour」列降序排序数据行

  • 选中所有数据行(注意不要包含最后的总计行)
  • 点击顶部菜单栏的「数据」→「排序」
  • 在弹出的对话框中:
    • 主要关键字选择「Total_by_hour」
    • 排序依据选「数值」,次序选择「降序」
    • 记得勾选「数据包含标题」,避免表头被当成数据排序
  • 点击确定,数据行就会按Total_by_hour从大到小排列

2. 按总计行值降序重排day1-day4列

  • 先确认你的总计行位置(比如在第12行)
  • 选中day1到day4的整列(包含所有数据行和总计行)
  • 右键点击列标(比如列B到E)→「自定义排序」
  • 点击对话框左下角的「选项」,选择「按行排序」,点击确定
  • 回到排序对话框:
    • 主要关键字选择你的总计行号(比如「行12」)
    • 排序依据选「数值」,次序选择「降序」
  • 点击确定后,day列就会按照总计行的数值从大到小排列成day3、day1、day4、day2的顺序

Python Pandas 代码实现

假设你的数据已经加载到DataFrame df 中,最后一行是总计行。

1. 按「Total_by_hour」降序排序行(排除总计行)

import pandas as pd

# 分离数据行和总计行
data_rows = df.iloc[:-1]
total_row = df.iloc[-1:]

# 对数据行按Total_by_hour降序排序
sorted_data = data_rows.sort_values(by='Total_by_hour', ascending=False)

# 合并排序后的数据行和总计行
df_sorted_rows = pd.concat([sorted_data, total_row]).reset_index(drop=True)

2. 按总计行值降序重排day1-day4列

# 定义需要排序的day列列表
day_columns = ['day1', 'day2', 'day3', 'day4']

# 根据总计行的对应值,对day列进行降序排序
sorted_day_cols = sorted(day_columns, key=lambda col: df_sorted_rows.iloc[-1][col], reverse=True)

# 重新整理DataFrame的列顺序(保留其他列,比如Total_by_hour)
other_columns = [col for col in df_sorted_rows.columns if col not in day_columns]
final_result = df_sorted_rows[other_columns + sorted_day_cols]

执行完以上代码后,final_result就是符合你要求的数据集:行按Total_by_hour降序排列,day列按总计行的数值从大到小重排。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:18:04