首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas dataframe中的Pandas列

Pandas dataframe中的Pandas列
EN

Stack Overflow用户
提问于 2020-11-15 22:59:28
回答 1查看 240关注 0票数 0

我试图在Pandas的数据栏中对一个绝对的“收入”列进行二值化。

对于本专栏,有四个记录值:‘'>50k',’'>50k.',<=50k.‘,'<=50k’

目前我的职责是..。

代码语言:javascript
复制
def income_to_numeric(x):
    for val in x:
        if val == '>50k.' or val == '>50k':
            val = 1
        else:
            val = 0
    return x
train['Income'] = income_to_numeric(train['Income'])

很明显,这个函数和实现不起作用,但是有人能解释一下为什么不能工作吗?我确信这与对函数如何工作或变量是如何分配的产生了根本性的误解,但这并不是简单地点击我的代码。我确实意识到这不是一个有效的实施。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-15 23:13:49

for循环实际上将x值的副本分配给变量val,这意味着更改val根本不会更改原始值。而且,在迭代数组时修改值代替数组是不健康的。

一个可能的解决方案是创建一个新数组,然后用所需的值填充它,如下所示:

代码语言:javascript
复制
def income_to_numeric(x):
    new_x = []
    for val in x:
        if val == '>50k.' or val == '>50k':
            new_x.append(1)
        else:
            new_x.append(0)
    return new_x

但是,如果您的数据文件相当大,您可能希望做一些更有效的事情。一种选择是:

代码语言:javascript
复制
binarization = {
    '>50k.': 1,
    '>50k': 1,
    '<=50k.': 0,
    '<=50k': 0,
}
train['New_Income'] = train['Income'].map(binarization)

如果这对你有用,或者你还有其他问题,请告诉我们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64850668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档