使用Lambda函数替换泰坦尼克号数据集Pclass列特殊值时报错求助
解决泰坦尼克号Pclass列替换'?'为'Unknown'的问题
错误原因
你写的lambda函数逻辑有误:lambda x: 'Unknown' if (df['Pclass'][x] == '?') else df['Pclass'][x] 里的x是Series的元素值(比如第一个元素是'3'),你用df['Pclass'][x]是试图把元素值当索引去取值,但你的DataFrame索引并非这些字符串,因此触发了错误。
正确写法
有几种简单的实现方式:
方法1:修正lambda逻辑
直接对元素值x判断,无需再通过索引取值:
df['Pclass'] = df['Pclass'].map(lambda x: 'Unknown' if x == '?' else x)
方法2:用replace方法(最简洁)
Pandas的replace方法专门用于值替换,代码更直观:
df['Pclass'] = df['Pclass'].replace('?', 'Unknown')
方法3:用where方法
where会保留满足条件的值,将不满足条件的替换为指定内容:
df['Pclass'] = df['Pclass'].where(df['Pclass'] != '?', 'Unknown')
内容的提问来源于stack exchange,提问作者bmj
相关产品推荐
相关产品推荐

