pandas Series map()使用
我的dataset 有‘Sex’这个列,里面有‘female’ 和‘male’,我想把他们映射为1,0.可是怎么返回的都是Nan呢?
代码如下
dataset['Sex'] = dataset['Sex'].map({'female': 1, 'male': 0})
回答:
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 pddata = [{'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