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

如何将Excel缩进层级数据转为多列结构化数据集?

用Python Pandas实现层级缩进会计数据转多列

完全可以用Pandas实现这个自动化转换,核心思路是先识别每行的缩进层级,再为每个层级创建列并填充上级数据,具体步骤如下:

  • 第一步:读取数据并识别缩进层级
    先把原始数据读入DataFrame,通过计算每行内容的缩进量(空格或制表符数量)确定层级。假设原始数据用4个空格作为缩进单位,代码如下:

    import pandas as pd
    
    # 读取原始数据(这里以Excel为例,可替换为CSV等格式)
    df = pd.read_excel("原始会计数据.xlsx", header=None, names=["内容"])
    
    # 计算每行的层级:用缩进空格数除以4,得到层级编号
    df["层级"] = df["内容"].apply(lambda x: len(x) - len(x.lstrip())) // 4
    

    如果是制表符缩进,把计算逻辑改成x.count('\t')即可。

  • 第二步:为每个层级提取对应内容
    为每个层级单独创建列,仅在对应层级的行填入内容,其余行留空:

    # 遍历所有层级,生成对应列
    for level in df["层级"].unique():
        df[f"层级_{level}"] = df.apply(lambda x: x["内容"].strip() if x["层级"] == level else None, axis=1)
    
  • 第三步:填充上级层级数据
    用ffill()方法向下填充每个层级的非空值,让每行都继承所有上级层级的内容:

    # 对每个层级列执行向下填充
    for col in df.columns[df.columns.str.startswith("层级_")]:
        df[col] = df[col].ffill()
    
  • 第四步:整理最终结果
    去掉不需要的中间列,并重命名列名匹配业务需求:

    # 保留层级列,删除原始内容和层级列
    结果表 = df.drop(["内容", "层级"], axis=1)
    
    # 重命名列(根据你的实际业务对应调整)
    结果表.columns = ["会计分录", "日期", "描述", "会计科目"]
    
    # 保存处理后的数据
    结果表.to_excel("转换后会计数据.xlsx", index=False)
    

这个方案完全自动化,不管数据量多大都能高效处理,只要调整缩进识别的逻辑匹配你的原始数据格式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:40:39