为了账号安全,请及时绑定邮箱和手机立即绑定

在熊猫数据框中将“否”和“是”转换为0和1

在熊猫数据框中将“否”和“是”转换为0和1

精慕HU 2021-05-11 09:33:49
我想转换包含整数以及'yes'和'no'值的'edjefe'列的数据。我的问题是我只想将“是”和“否”映射到1和0,并保持int值不变,所以我写了这段代码def foo(x):    if x == 'no':        return 0    elif x == 'yes':        return 1    else:        return x和 df1.edjefe.map(lambda x : foo(x))但是我遇到了一个错误,RecursionError: maximum recursion depth exceeded while calling a Python object
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

您也可以使用replace

df.edjefe.replace(to_replace=['no', 'yes'], value=[0, 1])


查看完整回答
反对 回复 2021-05-18
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以将其pd.Series.map与字典映射一起使用pd.Series.fillna:


d = {'no': 0, 'yes': 1}

df1['edjefe'] = df1['edjefe'].map(d).fillna(df1['edjefe'])

您可能会发现它比效率更高pd.Series.replace。


有关更多详细信息,请参见通过字典有效替换熊猫系列中的值。


如果您的系列中有可变对象,这将失败,因为字典键必须是可哈希的。在这种情况下,您可以转换为字符串:


df1['edjefe'] = df1['edjefe'].astype(str).map(d).fillna(df1['edjefe'])


查看完整回答
反对 回复 2021-05-18
?
catspeake

TA贡献1111条经验 获得超0个赞

只需使用dict-like即可to_replace

df['edjefe'].replace({'no': 0, 'yes': 1})


查看完整回答
反对 回复 2021-05-18
  • 3 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号