现在我有一个excel表格, 有两列, 分别是’学号‘和’成绩‘, 同时我还有一个学号列表, 请问如何用pandas将列表中的同学成绩设置为’通过‘, 其余不在列表中的同学设置为’不通过‘. 请尽量使用pandas的原生api, 避免使用for循环
时间: 2024-09-10 15:26:17 浏览: 34
你可以使用Pandas的`merge`函数结合列表操作来实现这个需求。假设你的Excel数据存储在一个名为df的DataFrame中,'学号'列是'ID','成绩'列是'Score',而你的学号列表存储在一个名为student_list的Python列表中。以下是步骤:
```python
import pandas as pd
# 假设你的DataFrame结构如下
data = {'ID': ['001', '002', '003', '004', '005'],
'Score': [85, 90, None, 78, 95]}
df = pd.DataFrame(data)
# 学号列表
student_list = ['001', '003']
# 使用merge和isin函数创建一个新的列'Through'
df['Through'] = df['ID'].apply(lambda x: '通过' if x in student_list else '不通过')
# 这里我们假设'None'表示未给出的成绩,你可以根据实际情况处理
df.loc[df['Score'].isnull(), 'Through'] = '不通过'
print(df)
```
这会根据学号列表给每个学生标记'通过'或'不通过',然后打印出完整的DataFrame。
阅读全文