pandas Series map()使用

我的dataset 有‘Sex’这个列,里面有‘female’ 和‘male’,我想把他们映射为1,0.可是怎么返回的都是Nan呢?
代码如下

dataset['Sex'] = dataset['Sex'].map({'female': 1, 'male': 0})

clipboard.png

回答:

pandas的map方法可以简而言之这样解释:对dataframe的每个元素执行func函数,用法基本如下:
df.map(func),输入的应该是一个函数,你这里的func应该是一个三元计算问题,所以代码应该是:

def func1(string):

return 1 if string =='female' else 0

dataset['Sex'] = dataset['Sex'].map(func1)

回答:

import pandas as pd

data = [{'id':1, 'sex': 'female'},{'id':2, 'sex': 'male'}]

df = pd.DataFrame(data)

d = {'female': 1, 'male': 0}

df['sex'] = df['sex'].map(lambda x: d[x])

#或者

#df['sex'] = df['sex'].apply(lambda x: d[x])

#或者

#df['sex'] = df.apply(lambda x: d[x['sex']], axis=1)

print df

回答:

dataset['Sex'] = dataset['Sex'].map({'female': 1, 'male': 0})

你的这行代码没有问题,你是不是把这行代码运行了两遍?我刚遇到了这个问题,发现了这个小细节。
我是在jupyter notebook里运行的,单独将这行代码运行两遍就会出现NaN。
因为运行第一遍已经是1,0了,再运行一次映射不到导致出现NaN。

以上是 pandas Series map()使用 的全部内容, 来源链接: utcz.com/a/160093.html

回到顶部