pandas Series map()使用

发布于 2022-09-05 10:18:46 字数 314 浏览 15 评论 0

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

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

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自控 2022-09-12 10:18:46

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

def func1(string):
    return 1 if string =='female' else 0
dataset['Sex'] = dataset['Sex'].map(func1)
陌生 2022-09-12 10:18:46
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
Spring初心 2022-09-12 10:18:46
dataset['Sex'] = dataset['Sex'].map({'female': 1, 'male': 0})

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文