python导入三个班的文件,分别合并名单表和成绩表(纵向堆叠),并导出为“名单表.xlsx”和“成绩表.xlsx”,要求不写入索引,且可正常显示学号
时间: 2024-12-25 11:33:19 浏览: 5
在Python中,你可以使用pandas库来处理这种数据操作。首先,确保你已经安装了`pandas`, `openpyxl`和`os`这三个库。如果你还没有安装,可以使用`pip install pandas openpyxl os`命令安装。
下面是一个示例代码,说明如何导入三个班级的CSV文件,合并数据,然后保存为Excel文件:
```python
import pandas as pd
from openpyxl import Workbook
import os
# 假设你的班级文件名分别是"class1.csv", "class2.csv", "class3.csv"
file_list = ['class1.csv', 'class2.csv', 'class3.csv']
# 合并数据
all_data = []
for filename in file_list:
data = pd.read_csv(filename)
# 将每个班级的数据框按学号堆叠
all_data.append(data.set_index('学号').stack().reset_index())
# 合并所有数据
merged_df = pd.concat(all_data, ignore_index=True)
# 清除索引列
merged_df = merged_df.drop(columns=['level_0'])
# 选择显示的列(这里假设姓名和成绩是需要显示的)
display_columns = ['姓名', '成绩']
display_df = merged_df[display_columns]
# 创建一个新的工作簿,并设置默认值不包含索引
workbook = Workbook()
sheet = workbook.active
sheet.title = "名单表"
# 写入数据到excel文件
with pd.ExcelWriter('名单表.xlsx', engine='openpyxl') as writer:
display_df.to_excel(writer, sheet_name='名单表', index=False)
# 对于成绩表,如果成绩也是单独的文件,类似地操作。如果没有单独文件,可以将成绩添加到上面的display_df中
# 如果有成绩表文件名列表(例如'score_files.txt'),则按照同样的方式读取并合并,然后另存为"成绩表.xlsx"
```
这个脚本会生成两个Excel文件:"名单表.xlsx"和"成绩表.xlsx"(如果有成绩表的话)。注意,你需要根据实际的文件路径、列名以及结构调整代码。
阅读全文