Python处理Excel数据:基于xlrd与xlwt的去重及求和实现
本文介绍使用Python标准库xlrd和xlwt处理Excel文件的去重与求和方法。通过读取指定列数据,利用字典结构对小区名称进行分组,分别累加总端口数与已使用端口数,最终生成新的Excel文件。该方法适用于需要合并重复项并统计数值的基础数据处理场景。
直接切入主题,编写这段代码的过程并不轻松,仅调试就耗费了约两个小时。期间尝试了多种实现方案,但均因各种兼容性或逻辑问题未能成功,最终才确定当前的解决路径。
这一过程也反映出对Python中可变对象与不可变对象区别的理解尚不够深入,导致在数据处理时走了不少弯路。
经过反复尝试,最终采用了一种较为直观但效率一般的笨办法完成了任务。
#coding:utf-8
import xlrd
import xlwt
import os
from collections import Counter
workbook = xlrd.open_workbook(r'D:\hh\heli\a.xlsx')
Sheet1 = workbook.sheet_by_name('Sheet1')
clos_a=Sheet1.col_values(1)
clos_b=Sheet1.col_values(4)
clos_c=Sheet1.col_values(5)
wbk = xlwt.Workbook()
sheet = wbk.add_sheet(u'初始表')
sheet.write(0, 0, u'小区')
sheet.write(0, 1, u'总端口数')
sheet.write(0, 2, u'已使用端口数')
test=('D:\hh\heli\\美女你好.xls').decode('utf-8') #表名是不是让你想入非非了,哈哈
result = []
list_m=map(lambda x,y:[x,y],clos_a,clos_b)
list_n=map(lambda q,w:[q,w],clos_a,clos_c)
dic={}
dic_a={}
def read_excel():
while test is True:
os.remove(test)
else:
for elem in list_m:
key=elem[0]
if key in dic:
dic[key]+=elem[1]
else:
dic[key]=elem[1]
for elem_a in list_n:
key_a = elem_a[0]
if key_a in dic_a:
dic_a[key_a]+=elem_a[1]
else:
dic_a[key_a] = elem_a[1]
item=list(dic)
item_a=list(dic_a)
for i in range(1,len(item)):
sheet.write(i,0,item[i])
sheet.write(i,1,dic[item[i]])
for p in range(1,len(item_a)):
sheet.write(p,2,dic_a[item_a[p]])
wbk.save(test)
if __name__ == "__main__":
read_excel()
以上就是利用Python对Excel文档进行去重及求和处理的完整示例,希望能为遇到类似问题的开发者提供参考,也欢迎继续支持本站获取更多技术分享。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













