如何在这个分类数据帧上应用lambda函数?注意成绩是绝对的。我希望C以上的人能通过。相反,它显示“Fail”。你知道吗
import pandas as pd
dfg = pd.DataFrame(['A+', 'A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D'],
index=['excellent', 'excellent', 'excellent', 'good', 'good', 'good', 'ok', 'ok', 'ok', 'poor', 'poor'])
dfg.rename(columns={0: 'Grades'}, inplace=True)
dfg['Grades'] = dfg['Grades'].astype('category',
categories=['D', 'D+', 'C-', 'C', 'C+', 'B-', 'B', 'B+', 'A-', 'A', 'A+'],
ordered=True)
def Assess(row):
if row>'C':
return 'Pass'
return 'Fail'
dfg['Asses'] = dfg.apply(lambda x: Assess(x.Grades), axis=1)
dfg
查看结果
Grades Asses
excellent A+ Fail
excellent A Fail
excellent A- Fail
good B+ Fail
good B Fail
good B- Fail
ok C+ Pass
ok C Fail
ok C- Pass
poor D+ Pass
poor D Pass
用途:
输出:
您使用
apply
的方式将字符串传递到函数中,而不是一个分类的东西。你知道吗相反,对序列本身使用比较操作,并允许panda处理它的分类性质。你知道吗
您可以使用
map
来获得通过/失败如果你真的想要一个
lambda
(我不会),你需要创建一个字典,将字母等级映射回数值。你知道吗相关问题 更多 >
编程相关推荐