fix(step9): 保留原始坐标列至 final_concentrations.csv,防止 Step14 崩溃

This commit is contained in:
DXC
2026-06-10 09:54:00 +08:00
parent 04a321d225
commit 7571762e63

View File

@ -622,6 +622,11 @@ class ConcentrationPipeline:
if "bb_lambda" not in df.columns: if "bb_lambda" not in df.columns:
df["bb_lambda"] = np.nan 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"]) df = df.sort_values([sample_id_col, "Wavelength"])
results = [] results = []
@ -657,6 +662,9 @@ class ConcentrationPipeline:
results.append(row) results.append(row)
out_df = pd.DataFrame(results) 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) os.makedirs(os.path.dirname(output_csv) or ".", exist_ok=True)
out_df.to_csv(output_csv, index=False, float_format="%.6f") out_df.to_csv(output_csv, index=False, float_format="%.6f")
return output_csv return output_csv