如何将化学化验数据集重复行按CHEM_UNIT重排为元素浓度列
化学化验长格式DataFrame转规范宽表实现方案
这个需求属于典型的长表转宽表操作,使用Python Pandas库的透视功能即可快速实现。
前置依赖
需要先导入Pandas库:
import pandas as pd
实现方法
方法1:pivot_table(兼容性最优)
适合可能存在同分组多重复值的场景,可自定义聚合规则处理冲突:
# 定义公共属性列:所有不需要展开、重复值完全一致的字段 public_cols = ['SAMPLE_NO', 'SAMPLE_SOURCE', 'DH_DEPTH_FROM', 'DH_DEPTH_TO', 'LONGITUDE_GDA2020', 'LATITUDE_GDA2020'] df_standard = pd.pivot_table( df, # 替换为你的原始DataFrame变量名 index=public_cols, columns='CHEM_UNIT', values='VALUE', aggfunc='first' # 同分组多值时取第一个,可根据业务需求替换为'mean'、'sum'等聚合函数 ).reset_index() # 可选操作:清除列名的层级标识 df_standard.columns.name = None
方法2:pivot(轻量高效)
如果确认同一样品同一元素不会有重复检测记录,可直接使用轻量的pivot方法:
public_cols = ['SAMPLE_NO', 'SAMPLE_SOURCE', 'DH_DEPTH_FROM', 'DH_DEPTH_TO', 'LONGITUDE_GDA2020', 'LATITUDE_GDA2020'] df_standard = df.pivot( index=public_cols, columns='CHEM_UNIT', values='VALUE' ).reset_index() df_standard.columns.name = None
输出效果
处理后的DataFrame将每行对应唯一的样品+属性组合,Au_PPM、Ag_PPM、Zn_PPM等元素浓度会作为独立列存储,完全符合规范要求。
内容的提问来源于stack exchange,提问作者kfob
相关产品推荐
相关产品推荐

