Pandas如何去除重复列名并将重复列的唯一行值追加到现有列
解决方案
你遇到的是观测数据按重复块存储的典型场景,不需要直接转置,按块分组后透视即可得到结构规整的表:
处理逻辑
- 首先给每一组重复的观测块(每5行一个块,以Date行开头)打分组标签
- 将多列观测值先转为长格式,兼容不同实验列数不同的情况
- 以观测类型为列名做透视,直接得到每一条观测的完整字段,无重复列名
代码示例
import pandas as pd # 读取数据,默认第一行为表头 df = pd.read_excel("你的数据文件路径.xlsx") # 重命名第一列为观测类型字段 df = df.rename(columns={df.columns[0]: "obs_type"}) # 1. 给每一组重复的观测块打分组ID,每遇到Date行就归为新的一组 df["group_id"] = (df["obs_type"] == "Date").cumsum() # 2. 将多列观测值转为长格式 df_long = df.melt(id_vars=["obs_type", "group_id"], var_name="col_id", value_name="obs_value") # 3. 透视生成规整表,自动去重列名 df_res = df_long.pivot( index=["group_id", "col_id"], columns="obs_type", values="obs_value" ).reset_index(drop=True)
处理效果
最终得到的df_res列名为Date、Arm movement、Leg movement、Head movement、Time,无重复列,每一行对应一个样本的全部观测值,可直接按列做后续分析。
内容的提问来源于stack exchange,提问作者Love Zackrisson
相关产品推荐
相关产品推荐

