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

使用LASIO合并LAS文件为DataFrame时索引不匹配的插值方案

解决方案:对齐深度索引后插值合并LAS文件

针对LAS文件深度索引不匹配导致合并失败的问题,核心思路是先统一所有井的深度索引,再通过插值补全缺失值,具体实现步骤如下:

步骤1:提取全局深度范围,生成公共索引

先收集所有LAS文件的深度数据,确定全局最小/最大深度,再生成连续的公共深度序列(可根据需求选择步长,比如保留原文件的最小步长,或手动指定固定步长)。

步骤2:单井数据插值对齐到公共索引

将每个井的DataFrame重采样到公共深度索引,用线性插值补全缺失的深度点(测井数据小范围差异用线性插值不影响可靠性)。

步骤3:合并对齐后的DataFrame

所有井的数据对齐到同一索引后,直接按列合并即可。

修改后的完整代码

import tkinter as tk
from tkinter import filedialog
import lasio
import pandas as pd

def selectFiles():
    root = tk.Tk()
    root.wm_attributes('-topmost', 1)
    filename = filedialog.askopenfilenames()
    root.withdraw()
    return filename

las_files_list = selectFiles()
df_list = []
well_names = []

# 读取所有LAS文件,收集原始数据与井名
for f in las_files_list:
    las = lasio.read(f)
    lasdf = las.df()
    well_name = str(las.well.WELL.value)
    well_names.append(well_name)
    df_list.append(lasdf)

# 生成公共深度索引:覆盖所有井的深度范围,用最小步长生成连续序列
all_depths = []
step_sizes = []
for df in df_list:
    all_depths.extend(df.index.tolist())
    # 计算当前井的深度步长
    steps = df.index[1:] - df.index[:-1]
    step_sizes.extend(steps.tolist())

min_depth = min(all_depths)
max_depth = max(all_depths)
common_step = min(step_sizes)  # 取所有井的最小步长,也可手动指定如0.1

# 生成连续的公共深度索引
common_depths = pd.arange(min_depth, max_depth + common_step, common_step)
common_depths = pd.Index(common_depths, name='DEPT')

# 对每个井的数据插值对齐到公共索引
aligned_dfs = []
for idx, df in enumerate(df_list):
    # 重采样到公共索引,线性插值补全缺失值
    aligned_df = df.reindex(common_depths)
    aligned_df = aligned_df.interpolate(method='linear', limit_direction='both')
    # 给列名添加井名后缀,方便识别来源
    aligned_df = aligned_df.add_suffix(f'_{well_names[idx]}')
    aligned_dfs.append(aligned_df)

# 合并所有对齐后的DataFrame
wdf = pd.concat(aligned_dfs, axis=1)

# 可选:将索引转为DEPT列
wdf['DEPT'] = wdf.index

关键细节说明

  • 公共索引生成:用所有井的深度范围和最小步长生成连续序列,确保覆盖所有井的数据;若不需要连续序列,也可提取所有唯一深度并排序后作为公共索引。
  • 插值策略:linear线性插值适配测井数据的小范围差异,limit_direction='both'确保首尾缺失值也能被补全。
  • 列名标识:用井名作为列后缀,比原代码的数字后缀更直观,便于后续数据溯源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:05:32