python中,一个员工对应多行成绩,如何筛选出其中分数最高的成绩行,并保留
时间: 2024-05-16 10:11:52 浏览: 4
该行其他信息?
你可以使用 pandas 模块中的 groupby() 和 idxmax() 方法来筛选出分数最高的成绩行,并保留该行其他信息。具体步骤如下:
1. 将数据读取为 pandas 的 DataFrame 格式。
2. 使用 groupby() 方法,按照员工编号进行分组。
3. 对每个分组使用 idxmax() 方法,获取该分组中 score 列分数最高的行的索引值。
4. 使用 loc[] 方法,根据获取的索引值选取对应行的数据,并保留该行其他信息。
代码示例如下:
```python
import pandas as pd
# 创建测试数据
data = {'employee_id': [1, 1, 2, 2, 3, 3],
'name': ['A', 'A', 'B', 'B', 'C', 'C'],
'score': [80, 90, 85, 95, 70, 80]}
df = pd.DataFrame(data)
# 按照员工编号分组,并获取分数最高的成绩行
idx = df.groupby('employee_id')['score'].idxmax()
# 根据获取的行索引选取对应行的数据,并保留该行其他信息
result = df.loc[idx, :]
print(result)
```
输出结果:
```
employee_id name score
1 1 A 90
3 2 B 95
5 3 C 80
```