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

如何将Pandas DataFrame同索引多行合并为一行完成数据清洗

跨行分组属性数据清洗实现方案

核心思路

先过滤全空行和无关数据行,按属性类型归集所有对应值后直接拼接生成结构化表,无需依赖固定行号。

实现代码(基于pandas实现)

import pandas as pd

# 读取源文件,这里替换为你的文件读取逻辑,比如pd.read_excel/ pd.read_csv
raw_df = pd.read_excel("your_source_file.xlsx", header=None)

# -------------------------- 步骤1:预处理过滤无效行 --------------------------
# 过滤全NaN空行
raw_df = raw_df.dropna(how="all")
# 过滤属性标识列(假设属性标识存放在第0列,若为索引则替换为raw_df.index.isin即可)
valid_attrs = ["Fruit", "Colour", "Quantity"]
raw_df = raw_df[raw_df.iloc[:, 0].isin(valid_attrs)].reset_index(drop=True)

# -------------------------- 步骤2:按属性归集所有值 --------------------------
attr_map = {
    "Fruit": [],
    "Colour": [],
    "Quantity": []
}

for _, row in raw_df.iterrows():
    # 获取当前行属性名
    current_attr = row.iloc[0]
    # 提取当前行除属性列外的所有非空有效值
    valid_vals = row.iloc[1:].dropna().tolist()
    attr_map[current_attr].extend(valid_vals)

# -------------------------- 步骤3:生成目标表并导出 --------------------------
result_df = pd.DataFrame(attr_map)
result_df.to_csv("cleaned_fruit_data.csv", index=False, encoding="utf-8-sig")

适配说明

  • 若属性标识是DataFrame的索引而非第一列,将raw_df.iloc[:, 0]替换为raw_df.index即可
  • 自动适配任意数量的换行分组、任意上下无关数据,只要属性标识正确即可正常归集
  • 支持批量处理大量源文件,只需外层套文件遍历逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:21:03