熊猫将yes转换为o / 1

时间:2019-10-24 13:14:36

标签: pandas dataframe

我在数据框(电信)中有一个yes,no列(语音邮件计划),我将其转换为0,1。 documentation 50,000 is the highest value.

使用我转换的以下语法:

telecom['voice mail plan'] = telecom['voice mail plan'].map({'yes': 1, 'no': 0})

但是,如您在下图中看到的,我的列(语音邮件计划)的值变为NaN

enter image description here

能不能让我知道是什么问题?

4 个答案:

答案 0 :(得分:1)

我认为应该有一些调整空间,然后使用Series.str.strip

测试:

print (telecom['voice mail plan'].unique().tolist())

telecom['voice mail plan'] = telecom['voice mail plan'].str.strip().map({'yes': 1, 'no': 0})

答案 1 :(得分:1)

从您的问题中得知,您希望将系列中的“是”更改为1,将“否”更改为0。

以下代码可以解决您的问题。

telecom['voice mail plan'] = telecom['voice mail plan'].replace("yes", 1)
telecom['voice mail plan'] = telecom['voice mail plan'].replace("no", 0)

答案 2 :(得分:0)

这里的一个很好的方法可能是pd。类别:

telecom['voice mail plan'] = pd.Categorical(telecom['voice mail plan']).codes

答案 3 :(得分:0)

我认为lambda函数是解决此问题的好选择

telecom['voice mail plan']=telecom.apply(lambda x : 1 if x['voice mail plan']=='yes' else 0, axis=1)