我在我的数据框中编码分类变量。我找到了一个很好的 pythonic 方法来使用 lambda 表达式来做到这一点。例如,以下代码行将性别类别“男性”和“女性”(编码为字符串)替换为值 0 和 1。
train_frame['Sex'] = train_frame['Sex'].apply(lambda x : 1 if x =='male' else 0)
现在我的问题是,我是否也可以这样做,但是对于两个以上的类别? (所以如果在表达式中可以说多于 1)。
我正在尝试为人们登船的地方做这个,我想用一个整数来表示人们登船的地方(一些背景信息:S = Southampton,C = Cherbourg,Q = Queenstown )
我试过做这样的事情,但它不起作用:
#Southampton = 0, Cherbourg = 1, Queenstown = 2
train_frame['Embarked'] = train_frame['Embarked'].apply(lambda x: 0 if x =='S', 1 if x=='C' else 2 )
有人可以向我解释一下是否可以将 lambda 表达式与多个 if 语句一起使用吗? 而且,稍微偏离主题:是否有更 pythonic 的方式来编码数据帧中的分类?
请您参考如下方法:
一种方法是使用dict
例如:
data = {'S': 0, 'C': 1}
train_frame['Embarked_N'] = train_frame['Embarked'].map(data).fillna(2)
