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

Pandas DataFrame批量处理:列名追加单位与备注迁移合并

解决方案:处理Pandas DataFrame的单位追加与备注合并

一、给化学物列名追加单位

假设你的单位信息存储在DataFrame的某一行(比如索引为unit_row_idx的行),可以通过循环批量重命名列:

import pandas as pd

# 1. 指定单位所在行的索引(根据你的实际数据修改)
unit_row_idx = 1
unit_values = df.loc[unit_row_idx]

# 2. 筛选需要添加单位的化学物列(根据你的列名规则调整,比如列名含"chem"或具体化学物名称)
chem_cols = [col for col in df.columns if "chem" in col]

# 3. 循环生成新列名
new_col_names = {}
for col in chem_cols:
    # 处理空单位的情况,避免列名出现空括号
    unit = unit_values[col] if pd.notna(unit_values[col]) else ""
    new_col_names[col] = f"{col} ({unit})" if unit else col

# 4. 应用新列名并删除原单位行
df.rename(columns=new_col_names, inplace=True)
df = df.drop(unit_row_idx).reset_index(drop=True)

二、合并站点实验室备注到对应数据行

根据你描述的备注行布局,分两种常见场景处理:

场景1:备注行紧跟对应站点的数据行

如果每个站点的数据行下一行就是该站点的备注行(比如索引0是数据,1是备注;索引2是数据,3是备注...):

# 1. 提取所有备注行的内容(假设备注存储在"lab_note"列)
site_notes = df["lab_note"].iloc[1::2].values

# 2. 将备注赋值给对应的数据行(数据行是索引0,2,4...)
df.loc[::2, "merged_lab_note"] = site_notes

# 3. 删除多余的备注行并重置索引
df = df.drop(df.index[1::2]).reset_index(drop=True)

场景2:有明确的站点ID和行类型标识

如果DataFrame里有site_id(站点唯一标识)和row_type(区分"data"或"note"行):

# 1. 拆分数据行和备注行
data_df = df[df["row_type"] == "data"].reset_index(drop=True)
note_df = df[df["row_type"] == "note"][["site_id", "lab_note"]].reset_index(drop=True)

# 2. 按站点ID合并备注到数据行
final_df = pd.merge(data_df, note_df, on="site_id", how="left")

注意事项

  • 所有代码中的列名、索引值请替换为你实际数据中的对应内容
  • 如果单位信息不是单独一行,而是存储在特定列中,需调整unit_values的提取逻辑
  • 合并备注时,确保站点标识的唯一性,避免出现一对多的匹配错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 01:44:50