pandas连接两个表,求总成绩,最分最高同学的班级和id,求单科成绩最高同学的班级和id
时间: 2023-05-11 09:03:43 浏览: 197
可以使用 pandas 的 merge 函数连接两个表,然后使用 groupby 函数求总成绩和单科成绩最高的同学,最后再根据班级和id找到对应的同学。具体代码如下:
```python
import pandas as pd
# 假设有两个表 scores 和 students,分别记录学生成绩和学生信息
scores = pd.DataFrame({'id': [1, 2, 3, 4, 5],
'class': ['A', 'A', 'B', 'B', 'B'],
'math': [90, 80, 70, 85, 95],
'english': [85, 90, 75, 80, 95]})
students = pd.DataFrame({'id': [1, 2, 3, 4, 5],
'name': ['Tom', 'Jerry', 'Alice', 'Bob', 'Eve']})
# 连接两个表
df = pd.merge(scores, students, on='id')
# 求总成绩和最高分同学的班级和id
df['total'] = df['math'] + df['english']
max_total = df['total'].max()
max_total_student = df[df['total'] == max_total].iloc[0]
print('总成绩最高的同学是 {},班级是 {},id 是 {}'.format(max_total_student['name'], max_total_student['class'], max_total_student['id']))
# 求单科成绩最高同学的班级和id
max_math = df['math'].max()
max_math_student = df[df['math'] == max_math].iloc[0]
print('数学成绩最高的同学是 {},班级是 {},id 是 {}'.format(max_math_student['name'], max_math_student['class'], max_math_student['id']))
```
注意,这里的代码只是示例,实际情况下需要根据具体的数据结构和需求进行修改。
阅读全文