如何将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
相关产品推荐
相关产品推荐

