下面是“Python中xlsx文件转置操作详解(行转列和列转行)”的完整实例教程。
1. 背景
在日常的数据处理中,经常需要处理表格数据,而Excel中的表格数据通常都是按行存储的。但有时候我们需要将其按列进行存储,这就需要使用到转置操作。
2. 示例
在介绍具体的转置操作之前,先来看一下示例数据。
姓名 | 语文成绩 | 数学成绩 | 英语成绩 |
---|---|---|---|
张三 | 90 | 95 | 85 |
李四 | 85 | 90 | 80 |
王五 | 80 | 85 | 90 |
上述表格数据为一个简单的成绩单,在Python中如何进行行转列和列转行的操作呢?下面我们分别介绍。
2.1 行转列
行转列操作即将表格数据中每一行数据转换为一列数据。下面是行转列的完整实现代码:
import openpyxl
# 加载Excel文件
wb = openpyxl.load_workbook("scores.xlsx")
# 获取表格数据
sheet = wb.active
data = []
for row in sheet.iter_rows(min_row=2, values_only=True):
data.append(row)
# 行转列
transposed_data = list(zip(*data))
# 新建并写入数据到Excel文件
wb_new = openpyxl.Workbook()
sheet_new = wb_new.active
for i, col in enumerate(transposed_data):
sheet_new.cell(row=1, column=i+1, value=f"科目{i+1}")
for j, val in enumerate(col):
sheet_new.cell(row=j+2, column=i+1, value=val)
# 保存Excel文件
wb_new.save("transposed_scores.xlsx")
代码中,首先使用 openpyxl
库加载 Excel 文件,然后获取表格数据并进行行转列操作,最后将转置后的数据写入新的 Excel 文件中并保存。实现过程中使用了 zip
函数来进行矩阵转置操作。
运行以上代码后,生成的 transposed_scores.xlsx
文件如下:
科目1 | 科目2 | 科目3 |
---|---|---|
90 | 85 | 80 |
95 | 90 | 85 |
85 | 80 | 90 |
2.2 列转行
与行转列相反,列转行操作即将表格数据中每一列数据转换为一行数据。下面是列转行的完整实现代码:
import openpyxl
# 加载Excel文件
wb = openpyxl.load_workbook("scores.xlsx")
# 获取表格数据
sheet = wb.active
data = []
for column in sheet.iter_cols(min_row=1, values_only=True):
data.append(column)
# 列转行
transposed_data = list(zip(*data))
# 新建并写入数据到Excel文件
wb_new = openpyxl.Workbook()
sheet_new = wb_new.active
for i, row in enumerate(transposed_data):
sheet_new.cell(row=i+1, column=1, value=f"学生{i+1}")
for j, val in enumerate(row):
sheet_new.cell(row=i+1, column=j+2, value=val)
# 保存Excel文件
wb_new.save("transposed_scores.xlsx")
代码中,同样使用 openpyxl
库加载 Excel 文件并获取表格数据,然后进行列转行操作并将转置后的数据写入新的 Excel 文件中并保存。
运行以上代码后,生成的 transposed_scores.xlsx
文件如下:
学生1 | 张三 | 李四 | 王五 |
---|---|---|---|
语文成绩 | 90 | 85 | 80 |
数学成绩 | 95 | 90 | 85 |
英语成绩 | 85 | 80 | 90 |
3. 总结
以上就是Python中将Excel文件进行行转列和列转行的实现方法,需要注意的是行转列和列转行的实现过程类似,唯一的区别在于获取表格数据的方式不同。此外,使用 openpyxl
库可以很方便地进行Excel文件的读写操作,代码实现也比较简单。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中xlsx文件转置操作详解(行转列和列转行) - Python技术站