Skip to main content
 首页 » 编程设计

python之lambda 表达式中的多个 if 语句

2025年05月04日18bonelee

我在我的数据框中编码分类变量。我找到了一个很好的 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)