From 7571762e63248cfc9eac7d0cadf1042fa0d376ef Mon Sep 17 00:00:00 2001 From: DXC Date: Wed, 10 Jun 2026 09:54:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(step9):=20=E4=BF=9D=E7=95=99=E5=8E=9F?= =?UTF-8?q?=E5=A7=8B=E5=9D=90=E6=A0=87=E5=88=97=E8=87=B3=20final=5Fconcent?= =?UTF-8?q?rations.csv=EF=BC=8C=E9=98=B2=E6=AD=A2=20Step14=20=E5=B4=A9?= =?UTF-8?q?=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/algorithms/concentration_inversion.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/algorithms/concentration_inversion.py b/src/core/algorithms/concentration_inversion.py index b93d8f5..a6bbb0e 100644 --- a/src/core/algorithms/concentration_inversion.py +++ b/src/core/algorithms/concentration_inversion.py @@ -622,6 +622,11 @@ class ConcentrationPipeline: if "bb_lambda" not in df.columns: df["bb_lambda"] = np.nan + # ── 保留原始坐标列:按 sample_id 取第一条记录的非光谱列 ─────────── + wl_col = "Wavelength" + coord_meta_cols = [c for c in df.columns if c not in (sample_id_col, wl_col, "a_lambda", "bb_lambda")] + coord_df = df.groupby(sample_id_col, sort=False)[coord_meta_cols].first().reset_index() + df = df.sort_values([sample_id_col, "Wavelength"]) results = [] @@ -657,6 +662,9 @@ class ConcentrationPipeline: results.append(row) out_df = pd.DataFrame(results) + # ── 将原始坐标列按 sample_id 合并到浓度结果左侧 ─────────────────── + if not coord_df.empty and sample_id_col in coord_df.columns: + out_df = coord_df.merge(out_df, on=sample_id_col, how="left") os.makedirs(os.path.dirname(output_csv) or ".", exist_ok=True) out_df.to_csv(output_csv, index=False, float_format="%.6f") return output_csv \ No newline at end of file