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

求助:按故障编号最新检查日期分组并排序数据集行

实现思路与具体方案

要实现你描述的排序规则,核心是先确定每个故障编号(FaultNumber)组的最新检查日期,以此作为分组的排序依据,再在组内按检查日期倒序排列。具体分两步执行:

核心逻辑拆解

  • 第一步:为每个FaultNumber计算组内的最新检查日期(即该组所有记录中InspectionDate的最大值),这个值将作为分组排序的优先级键。
  • 第二步:先按「组内最新检查日期」倒序排列,确保最新出现的故障组排在前面;再按FaultNumber分组(保证同组记录聚合在一起);最后在组内按InspectionDate倒序排列。

不同工具的具体实现

1. SQL 实现

利用窗口函数MAX() OVER (PARTITION BY ...)直接计算每个组的最新日期,再基于该字段排序:

SELECT 
    InspectionId,
    InspectionDate,
    FaultNumber,
    Comment
FROM 
    your_table
ORDER BY 
    -- 按组内最新检查日期倒序,确定分组顺序
    MAX(InspectionDate) OVER (PARTITION BY FaultNumber) DESC,
    -- 确保同组记录排在一起
    FaultNumber,
    -- 组内按检查日期倒序
    InspectionDate DESC;

2. Pandas(Python)实现

先通过分组计算每个FaultNumber的最新日期,合并到原数据集后再排序:

import pandas as pd

# 读取原始数据集
df = pd.read_csv("your_data.csv")

# 计算每个FaultNumber的最新检查日期
group_max_dates = df.groupby("FaultNumber")["InspectionDate"].max().reset_index()
group_max_dates.rename(columns={"InspectionDate": "GroupLatestDate"}, inplace=True)

# 合并回原数据集
df_merged = pd.merge(df, group_max_dates, on="FaultNumber")

# 按规则排序
sorted_df = df_merged.sort_values(
    by=["GroupLatestDate", "InspectionDate"],
    ascending=[False, False]
).drop(columns=["GroupLatestDate"])

# 输出结果
print(sorted_df)

3. Excel 实现

如果用Excel处理,可通过辅助列实现:

  • 新增辅助列(比如D列),输入公式=MAX(IF($C$2:$C$N=C2,$B$2:$B$N,""))(按Ctrl+Shift+Enter作为数组公式输入,N为数据最后一行行号),计算每个FaultNumber对应的最新检查日期。
  • 选中所有数据,按「辅助列(降序)→ FaultNumber(升序/降序不影响,只要同组聚合)→ InspectionDate(降序)」的优先级排序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:24:54