Вы можете использовать np.select
import pandas as pd
import numpy as np
df = pd.DataFrame({"final": [95,85,45,77,99,41]})
cond1 = (100 >= df["final"]) & (df["final"]>= 91)
cond2 = (90 >= df["final"]) & (df["final"]>= 81)
cond3 = (80 >= df["final"]) & (df["final"]>= 71)
df["grades"] = np.select([cond1, cond2, cond3], ["A", "B", "C"], "D")
print(df)
Выход:
final grades
0 95 A
1 85 B
2 45 D
3 77 C
4 99 A
5 41 D
Если вы хотите, чтобы функция делала то же самое
def grade_func(data, col, new_col):
cond1 = (100 >= data[col]) & (data[col]>= 91)
cond2 = (90 >= data[col]) & (data[col]>= 81)
cond3 = (80 >= data[col]) & (data[col]>= 71)
data[new_col] = np.select([cond1, cond2, cond3], ["A", "B", "C"], "D")
return data
df = pd.DataFrame({"final": [95,85,45,77,99,41]})
grade_func(df, "final", "grades")
Примечание: Вы можете добавлять / удалять функциональные параметры в зависимости от ваших требований