Python处理Excel数据,有两种思路,
-
一是通过相应的execl库进行操作,优点是最大限度保留了excel的特性,缺点是速度慢
-
另一种是以数据的思维,通过Pandas等库进行数据处理,速度快,缺点是损失execl特性
需求:
读取一批excel表格文件,过滤出第三列数据符合某一条件的数据
方法1:利用 openpyxl库处理,思路是删除不符合需要的行
import openpyxl
select_list = [
"XXX",
"YYY"
]
#打开表格的第一个表单
wb = openpyxl.load_workbook("file_name.xlsx")
sheet = wb.worksheets[0]
#遍历行,删除不符合条件的行
for row in sheet.rows:
for cell in row:
if cell.column ==3 and (cell.value not in select_list):
print(cell.coordinate, cell.value,cell.column,cell.row)
sheet.delete_rows(cell.row)
break
wb.save("new_file_name.xlsx")
经过测试,此方法速度很慢,适用数据不多的情况
方法2: 利用pandas进行处理,转存成csv格式
import csv
import openpyxl
import pandas as pd
select_list = [
"AAA",
"BBB"
]
datas = []
#pd打开,注意指定引擎
df = pd.read_excel("file_name.xlsx", engine ="openpyxl")
# 获取行号的索引,并对其进行遍历:
for i in df.index.values:
if df.loc[i].values[2] in select_list:
print(df.loc[i].values)
datas.append(df.loc[i].values.tolist())
#遍历写入结果文件
with open("new_file_name.csv", 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
for row in datas:
writer.writerow(row)
此方法速度快很多,但是结果格式需要一定微调