我来详细讲解一下“Python对Excel按条件进行内容补充”的完整实例教程。
标题
首先,为了让我们的文本更加规范化,我们需要给整个文本添加一个标题,这样可以让文本更加清晰明了。
Python对Excel按条件进行内容补充
安装openpyxl库
在实践之前,我们需要先安装 openpyxl
库。在命令行中输入以下命令即可:
pip install openpyxl
如果你没有安装pip,那么需要先安装pip,可参考pip的安装文档。
实例一
假设我们有一个excel文件test.xlsx
,内容如下:
姓名 | 年龄 | 性别 |
---|---|---|
张三 | 20 | 男 |
李四 | 18 | 女 |
王五 | 22 | 男 |
我们现在需要对这个表格按照年龄进行一个排序,这时候我们就可以使用Python对Excel进行内容补充。
代码如下:
from openpyxl import load_workbook
def sort_by_age(file_path):
wb = load_workbook(file_path)
sheet = wb.active
data = []
for row in sheet.iter_rows(min_row=2):
values = [cell.value for cell in row]
data.append(values)
data = sorted(data, key=lambda x: x[1])
for idx, row in enumerate(data):
sheet.cell(row=idx+2, column=1).value = row[0]
sheet.cell(row=idx+2, column=2).value = row[1]
sheet.cell(row=idx+2, column=3).value = row[2]
wb.save(file_path)
if __name__ == '__main__':
sort_by_age('test.xlsx')
从上面的代码可以看出,我们首先创建了一个 load_workbook()
类,并指定了 test.xlsx
这个 Excel 文件。接着我们获取了 sheet
表格。
我们通过 iter_rows()
来遍历 sheet 表格的所有行,并将每一行的内容保存到 data
这个数组中。接着我们定义一个排序规则,这里使用 lambda 函数,按照年龄进行排序。
最后,我们通过 enumerate()
函数遍历已经排好序的列表 data
,并将每行数据的三个字段按照顺序写入到 sheet
表格的相应单元格中。最后保存文件。
运行代码后,我们可以看到 Excel 表格已经按照年龄进行了排序,结果如下:
姓名 | 年龄 | 性别 |
---|---|---|
李四 | 18 | 女 |
张三 | 20 | 男 |
王五 | 22 | 男 |
实例二
接下来我们再来看一个实例。假设我们有一张Excel表格 test.xlsx
,内容如下:
姓名 | 科目 | 分数 |
---|---|---|
张三 | 数学 | 60 |
李四 | 数学 | 65 |
张三 | 英语 | 70 |
李四 | 英语 | 75 |
王五 | 数学 | 80 |
王五 | 英语 | 85 |
现在我们需要统计出每个人的总分,并添加到表格中。
代码如下:
from openpyxl import load_workbook
def add_total_score(file_path):
wb = load_workbook(file_path)
sheet = wb.active
total_score_col = sheet.max_column + 1
sheet.cell(row=1, column=total_score_col).value = '总分'
data = {}
for row in sheet.iter_rows(min_row=2):
name = row[0].value
score = row[2].value
if name in data:
data[name].append(score)
else:
data[name] = [score]
for idx, row in enumerate(sheet.iter_rows(min_row=2)):
name = row[0].value
total_score = sum(data[name])
sheet.cell(row=idx+2, column=total_score_col).value = total_score
wb.save(file_path)
if __name__ == '__main__':
add_total_score('test.xlsx')
从代码可以看出,我们首先创建了一个 load_workbook()
类,并指定了 test.xlsx
这个 Excel 文件。接着我们获取了 sheet
表格。
我们还定义了一个变量 total_score_col
来获得 sheet
表格中下一个空列的位置,并在此列的第一行写入一个表头 总分
。
我们之后遍历 sheet
表格的所有行,并将每个人的成绩保存到 data
字典中。我们可以通过 if
来判断每个人的名字是否已经在 data
字典中,如果已经存在,那么就添加到这个人的成绩列表中。如果不存在,那么就新建一个列表并添加这个人的成绩。
最后,我们通过 sheet.iter_rows()
来遍历 sheet
表格的所有行,并根据每行中的姓名字段,计算这个人的总分并添加到新的一列 总分
中。最后保存文件。 运行代码后,我们可以看到 Excel 表格中已经添加了一列 总分
,并且对每个人的成绩进行了统计,结果如下:
姓名 | 科目 | 分数 | 总分 |
---|---|---|---|
张三 | 数学 | 60 | 130 |
李四 | 数学 | 65 | 140 |
张三 | 英语 | 70 | 130 |
李四 | 英语 | 75 | 140 |
王五 | 数学 | 80 | 165 |
王五 | 英语 | 85 | 165 |
结论
以上就是本文介绍Python对Excel按条件进行内容补充的两个实例,其中一个是对Excel进行排序,另一个是对Excel进行数据统计,希望对大家有所帮助。