
大家好!
欢迎来到「Pandas案例精进」专栏
今天分享的是一个之前的案例,里面涉及的方法可能有些过时,但处理思想仍有较高的参考价值。
Pandas案例需求

整理了一下需求大概的意思,即根据汇总表的分区字段自动填入指定的分区文件中:

对于分区表的文件,例如A区.xlsx、B区.xlsx等,需要先将3行之后已经存在的数据删除后再进行写入。
B区.xlsx在自动填入后,结果如下:

其实初始需求非常简单,我们下面看看怎么做吧。
汇总表的数据情况
1import pandas as pd 2data = pd.read_excel("汇总.xlsx", sheet_name='明细') 3data 4

对于B区的数据如何写入呢?
筛选出准备写入B区的数据
1df = data[data["所属区"] == "B区"] 2df 3

1df = df.iloc[:, 1:] 2df.values.tolist() 3
结果:
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 3
先删除第4行之后的旧数据,预计1000行完全够用,具体数量根据自己的数据来大致估算。
1sheet.delete_rows(idx=4, amount=1000) 2
然后再进行添加数据
1for row in df.values.tolist(): 2 sheet.append(row) 3workbook.save(filename="B区.xlsx") 4workbook.close() 5
查看名为B区的Excel:

遍历分区字段的简单办法
1for area, df in data.groupby('所属区'): 2 print(area) 3 display(df) 4

完整代码
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() 21
好了经过以上步骤,就成功完成任务了:

群友也表示感谢,美滋滋

本文代码和案例数据
如果大家想自己学习演练,可以通过如下步骤获取本文代码和案例数据👇

扫描下方二维码👇添加我的微信(朱小五mini)为好友,然后回复关键词“20210226”,关键词是前面的红色数字,建议长按复制!

后续
不过好景不长,大早上新需求又来了:

后续需求如何解决?
我们下篇文章见!
如果大家喜欢我们的文章,就给右下角点个赞👍吧~

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/XY1lS4mxEf7BTf8UnFmaFA,可扫描二维码进行关注:
如有侵权,请联系删除。