把这里当作一个记录日常如何处理工作上提出的任务的平台。
要求:表格里面数据重复行自动往后缩进四个空格,并且在第一个数据重复行的上一行建立一个同名的父级
格式长这样
要变成这样
处理方法挺简单的: 添加一列新的编号列,为每一行编号,如果当前行和上一行不相同,就编号1,否则编号自动+1,然后找到所有编号为2的行索引,在下一行插入一个一样的,之后对所有编号大于1的行缩进
import pandas as pd
file_path = 'xxx.xlsx'
df = pd.read_excel(file_path, header=None)
# 初始化编号列
df[1] = 1
# 从第二行开始遍历数据框
for i in range(1, len(df)):
# 如果当前行和上一行的内容相等,编号加1
if df.iloc[i, 0] == df.iloc[i-1, 0]:
df.iloc[i, 1] = df.iloc[i-1, 1] + 1
else:
df.iloc[i, 1] = 1
# 获取所有要插入行的原始索引,倒序排列
original_indices = df[df[1] == 2].index.tolist()[::-1]
original_indices
# 插入行
for idx in original_indices:
# 复制当前行
row_to_insert = df.loc[[idx]].copy()
# 将当前行下方的所有行下移一行
df = pd.concat([df.iloc[:idx+1], pd.DataFrame([None] * len(df.columns)).T, df.iloc[idx+1:]]).reset_index(drop=True)
# 插入复制的行
df.iloc[idx+1] = row_to_insert.values[0]
# 缩进所有编号大于1的行
for i in range(len(df)):
if df.iloc[i, 1] > 1:
df.iloc[i, 0] = ' ' + str(df.iloc[i, 0]) # 在每个单元格前添加四个空格
# 保存新的Excel文件,不包含列名
output_path = 'xxxx.xlsx'
df.to_excel(output_path, header=False, index=False)