猿问

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

我想转换包含整数以及'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


精慕HU
浏览 260回答 3
3回答

米琪卡哇伊

您也可以使用replace:df.edjefe.replace(to_replace=['no', 'yes'], value=[0, 1])

牛魔王的故事

您可以将其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'])

catspeake

只需使用dict-like即可to_replace:df['edjefe'].replace({'no': 0, 'yes': 1})
随时随地看视频慕课网APP

相关分类

Python
我要回答