def category(x):
# column contains N1,N2,N3,N4,sum
level = min(100 - x.loc['sum'], 30) // 10
x = x[["N1", "N2", "N3", "N4"]]
count = (x < 60).sum()
category = level + min(count, 2)
if category < 1:
return "A"
elif category < 2:
return "B"
elif category < 3:
return "C"
else:
return "D"
df['category'] = df.apply(category, axis=1)
规则好像不全,可以全部补充到分类函数里