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

如何按连续相同Layer值精简数据集并提取对应深度极值

连续同Layer分段合并实现方法

核心处理注意点:不能直接按全表BorID+Layer字段分组聚合,否则会把同一BorID下不连续的同Layer值记录错误合并,必须先识别同一BorID下、Layer取值连续相同的独立分段,再对每个分段做聚合计算。


方案1:Python + Pandas 实现(千行级数据处理效率高,推荐)

  • 安装依赖库
    pip install pandas
    
  • 编写处理代码,可直接适配csv、Excel等常见格式的数据集
    import pandas as pd
    
    # 读取本地数据集,根据文件格式选择对应读取方法
    df = pd.read_csv("你的数据集文件路径.csv")
    # Excel格式读取:df = pd.read_excel("你的数据集文件路径.xlsx")
    
    # 生成连续分段标记:按BorID分组,当前行Layer和上一行不同时,分段编号累加
    df["block_flag"] = df.groupby("BorID")["Layer"].apply(
        lambda col: (col != col.shift()).cumsum()
    ).reset_index(drop=True)
    
    # 按BorID+分段标记分组聚合
    merged_result = df.groupby(["BorID", "block_flag"], as_index=False).agg(
        Depth1=("Depth1", "min"),
        Depth2=("Depth2", "max"),
        Layer=("Layer", "first")
    ).drop(columns="block_flag") # 删除辅助用的分段标记列
    
    # 导出处理完成的结果
    merged_result.to_csv("合并后结果.csv", index=False)
    # Excel格式导出:merged_result.to_excel("合并后结果.xlsx", index=False)
    
  • 效果说明
    你给出的示例数据中每条记录的Layer值和相邻记录均不重复,每个连续分段仅1条记录,处理后结果和原表一致;如果存在连续多条同Layer记录,例如某BorID下连续3条Layer为S的记录,Depth1/Depth2依次为0.1-0.5/0.5-1.1/1.1-1.6,会自动合并为单条记录:BorID不变,Depth1取最小值0.1,Depth2取最大值1.6,Layer为S。

方案2:Excel 操作实现(无需编写代码)

  • 先对全表按BorID字段排序,确保同一个BorID的所有记录连续排列(原数据已按钻孔逐行排列可跳过此步)
  • 新增辅助列命名为连续标记,首行数据行(表头下第一行)的单元格填1,第二行数据开始输入公式:=IF(AND(A2=A1,D2=D1),E1,E1+1),其中A列为BorID列、D列为Layer列、E列为新建的连续标记列,公式下拉填充整列
  • 选中全表,点击顶部菜单栏「数据」选项卡中的「分类汇总」功能,分类字段选择连续标记,汇总项勾选Depth1的最小值、Depth2的最大值,确认后即可生成每个连续分段的聚合值,最后筛选汇总行、删除多余明细行即可得到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:12:13