两个list根据一个相同字段合并_python xlwings实现报表自动化 EXCEL批量加字段,合并...

889702cb92b70377eac441f9e9f6c538.png

一、需求解析

李鑫:python爬虫+xlwings包excel自动化爬取全国医院信息(A+医学百科)+描述性统计​zhuanlan.zhihu.com
3abfc5b4eb4835ab6356511cdb4191d3.png

在这篇文章里,分省,分类别爬取了全国的医院信息。现在我们需要做加字段合并操作。

出现两个问题:

  • 医院等级这个字段需要我们加上去。
  • 两百多张表需要做成一张表。

二、思路逻辑

读取文件夹里的文件列表 ——> 读取EXCEL表格 ——> 获取每张表格行数 ——> 插入等级 ——> 合并时值保留第一张表的表头

5b90fb6e106edb24ae521507b9bb6905.png
此为目录

三、代码详解

读取文件列表
for jibie in yiyuan_jibie:
    path_name = r'C:/Users/alex/Desktop/医院信息爬虫数据/分等级/' + jibie + '/'
    list_jibie = os.listdir(path_name)
#插入医院等级这个字段
import xlwings as xw
for jibie in yiyuan_jibie:
    for xl in list_jibie:
        xlpath = r'C:/Users/alex/Desktop/医院信息爬虫数据/分等级/' + jibie + '/' + xl
        wb = xw.Book(xlpath)
        sht = wb.sheets[0]
        nrows = sht.api.UsedRange.Rows.count
        sht.range(f'I1:I{nrows}').value = jibie
        wb.save()
        wb.close()
#合并EXCEL表格
import os
import xlrd
import pandas as pd

#获取所有需要合并的工作簿路径,生成list
def file_name(file_dir): 
    list=[]
    for file in os.listdir(file_dir):
        if os.path.splitext(file)[1] == '.xls':
            list.append(file)
    return list
#yiyuan_jibie = ["三级甲等","三级乙等","三级丙等","二级甲等","二级乙等","二级丙等","一级甲等","一级乙等","一级丙等"]
for jibie in yiyuan_jibie:
    path =  r'C:/Users/alex/Desktop/医院信息爬虫数据/分等级/' + jibie
    wks = file_name(path)
    #print(wks)
    data = []   #定义一个空list
    for i in range(len(wks)):
        read_xlsx = xlrd.open_workbook(path + '' + wks[i])
        sheet1 = read_xlsx.sheets()[0] #查看sheet1的数据
        nrow =  sheet1.nrows
        title = sheet1.row_values(0)   #查看第1行数据
        for j in range(1,nrow): #逐行打印
            data.append(sheet1.row_values(j))

            content= pd.DataFrame(data)
    #修改标题
    content.columns= title
    #写入文件
    #写入csv文件
    #content.to_csv(path+'py_union.xlsx', sep=',', header=True, index=False)
    #写入excel文件
    content.to_excel(path+'' + jibie + '.xlsx', header=True, index=False)

四、结语

c7e7ff9d67326abb6384a0bffc42dfaf.png

一张有全国医院信息的表格就完成了。如果想要数据的留下邮箱就好。后面会有一些简单的分析。

码字不易,求赞求关注!谢谢!

79c893be00267921f3df5704378934cf.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值