科学健康资讯 · 内容仅供参考,不替代专业诊疗 联系我们|疾病百科
会计

get 注册会计师

2023-09-17 会计 本文链接

Pandas案例精进 | 自动分割汇总表写入到子表

这是一个用pandas解决工作问题的实例,在财务工作中,我们也经常会遇到要将excel汇总表按某种需求分拆为若干个子表的情况,get到这个技能后,完全可以运用到财会工作中去,下面就来详细看看吧。

1.

Pandas案例需求

这是一位群友在学习交流群里提出的需求,如下图。

整理了一下需求,其大概的意思是将汇总表的分区字段自动填入到指定的分区文件中。

对于分区表的文件,如A区.xlsx、B区.xlsx等,需要先将第3行下面已经存在的数据删除后再进行写入。

B区.xlsx在自动填入后,结果如下。

其实初始需求非常简单,我们下面看看怎么做吧。

2.

汇总表的数据情况

1import pandas as pd

2data = pd.read_excel("汇总.xlsx", sheet_name='明细')

3data

对于B区的数据如何写入呢?

3.

筛选出准备写入B区的数据

1df = data[data["所属区"] == "B区"]

2df

1df = df.iloc[:, 1:]

2df.values.tolist()

结果如下。

1[[111111, nan, '张一', '招商银行', 576.0, nan, nan, nan, '河南省'],

2 [111112, nan, '张二', '招商银行', 576.0, nan, nan, nan, '湖南省'],

3 [111113, nan, '张三', '招商银行', 1392.0, nan, nan, nan, '河南省']]

4.

覆盖写入到对应的分区文件

1workbook = load_workbook(filename="B区.xlsx")

2sheet = workbook.active

先删除第4行之后的旧数据,预计1000行完全够用,具体数量根据自己的数据来大致估算。

1sheet.delete_rows(idx=4, amount=1000)

然后再进行添加数据。

1for row in df.values.tolist():

2    sheet.append(row)

3workbook.save(filename="B区.xlsx")

4workbook.close()

查看名为B区的Excel:

5.

遍历分区字段的简单办法

1for area, df in data.groupby('所属区'):

2    print(area)

3    display(df)

完整代码如下。

1data = pd.read_excel("汇总.xlsx", sheet_name='明细')

2

3for area, df in data.groupby('所属区'):

4    print(area)

5    if os.path.exists(f"{area}.xlsx"):

6        workbook = load_workbook(filename=f"{area}.xlsx")

7    else:

8        print(f"{area}.xlsx不存在")

9        continue

10    sheet = workbook.active

11    df = df.iloc[:, 1:]

12    # 先删除第4行之后的旧数据,预计1000行完全够用

13    sheet.delete_rows(idx=4, amount=1000)

14    # 然后在进行添加数据

15    for row in df.values.tolist():

16        sheet.append(row)

17        print(row)

18    print(f"保存到{area}.xlsx文件中")

19    workbook.save(filename=f"{area}.xlsx")

20    workbook.close()

好了,经过以上步骤,就基本实现目标了。#python#

群友也表示感谢,心里美滋滋。

6.

本文代码和案例数据

如果大家想自己学习演练,请私我索取本文代码和案例数据

本文内容仅供健康科普参考,不能替代专业医疗诊断和治疗建议。如有身体不适,请及时就医并遵从医师指导。

相关阅读