利用Python实现从五个含有学号姓名成绩的TXT文件中,成绩文件已发至微信群中,每个文件代表一次成绩,总共五次,统计出每个人成绩最高的三次分数,并将结果保存在一个excel文件中
时间: 2023-12-10 18:41:41 浏览: 84
(升级版)python实现TXT文件批量处理-分割、翻译和格式转excel
好的,假设五个TXT文件的文件名分别为score1.txt,score2.txt,score3.txt,score4.txt,score5.txt,其中每个文件包含的内容格式为:
```
学号 姓名 成绩
001 张三 90
002 李四 85
...
```
我们可以按照以下步骤来实现:
1. 安装所需的Python库:pandas、xlwt
```python
!pip install pandas xlwt
```
2. 导入所需的库
```python
import pandas as pd
import os
import xlwt
```
3. 定义读取单个TXT文件的函数
```python
def read_score_file(file_path):
df = pd.read_table(file_path, sep=' ', header=None, names=['学号', '姓名', '成绩'])
return df
```
4. 定义读取所有TXT文件并处理数据的函数
```python
def process_score_files():
# 定义需要统计的列
cols = ['学号', '姓名', '成绩']
# 定义结果列表
result = []
# 遍历所有TXT文件
for i in range(1, 6):
file_path = 'score{}.txt'.format(i)
# 读取单个文件
df = read_score_file(file_path)
# 按姓名分组,并统计每个人的最高三次成绩
top_scores = df.groupby('姓名')['成绩'].apply(lambda x: x.nlargest(3).sum())
# 将结果添加到列表中
result.extend([[name, score] for name, score in zip(top_scores.index, top_scores.values)])
# 转换为DataFrame,并按姓名排序
result_df = pd.DataFrame(result, columns=['姓名', '最高三次成绩']).sort_values(by='姓名')
return result_df
```
5. 定义保存结果到Excel文件的函数
```python
def save_to_excel(result_df):
writer = pd.ExcelWriter('top_scores.xlsx', engine='xlwt')
result_df.to_excel(writer, index=False)
writer.save()
```
6. 调用函数,完成整个过程
```python
if __name__ == '__main__':
result_df = process_score_files()
save_to_excel(result_df)
```
完整代码如下:
阅读全文