如何按一列分组、组内排序后再按指定规则排序?(营养数据实例)
食品营养成分按重量优先级排序实现方法
需求回顾
需要将食品营养成分数据按总重量从大到小排序,规则如下:
- 先按单位分组,优先级为
g>mg>ug - 同一单位组内,按含量(amount)从大到小排序
方法一:Excel 实现
- 添加单位优先级辅助列
在数据旁新增一列,根据单位赋值:g填3,mg填2,ug填1(数值越大优先级越高) - 设置排序规则
选中所有数据区域,点击「数据」选项卡 →「排序」:- 主要关键字选辅助列,排序依据选「数值」,次序选「降序」
- 点击「添加条件」,次要关键字选amount列,排序依据选「数值」,次序选「降序」
- 完成排序
确认设置后即可完成排序,辅助列可按需删除
方法二:Python(Pandas)实现
假设数据已读取为DataFrame格式,代码示例如下:
import pandas as pd # 读取数据(示例,实际根据数据源调整) df = pd.read_excel("营养成分数据.xlsx") # 定义单位优先级映射 unit_priority_map = {"g": 3, "mg": 2, "ug": 1} # 添加优先级列 df["unit_priority"] = df["unit_name"].map(unit_priority_map) # 按规则排序:先按优先级降序,再按含量降序 sorted_df = df.sort_values(by=["unit_priority", "amount"], ascending=[False, False]) # 可选:删除辅助列并重置索引 sorted_df = sorted_df.drop("unit_priority", axis=1).reset_index(drop=True) # 输出或保存排序后的数据 print(sorted_df) # sorted_df.to_excel("排序后营养成分数据.xlsx", index=False)
内容的提问来源于stack exchange,提问作者user3217883
相关产品推荐
相关产品推荐

