我想转换包含整数以及'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贡献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'])
添加回答
举报
0/150
提交
取消