python - 使用Python迭代列中的元素以进行预处理

标签 python pandas loops machine-learning jupyter

我一直在使用住房数据集进行机器学习。 在尝试减少数据集的维度时,我想将 2 列(即“yr_built”和“yr_renovated”)合并到新列“age”(房屋的)。

我正在尝试从 2 个预定义列((year_built) 和 (year_renovated))创建一个新的列年龄。翻新年份列的值类似于年份(例如,如果翻新则为 1991 年),如果未翻新则为 0。

我在这里尝试使用的逻辑是,如果进行了翻修,则建筑的年龄是当前年份 - 翻修年份,即

[年龄 = 2019 - Year_renovated]

如果没有进行翻修:建筑物的年龄是当年 - build 年份,即

[年龄 = 2019 - Year_built]

the image of the ppnew data is displayed in following picture

我尝试使用for循环来实现相同的效果,代码如下:

[enter image description here][1]

for i in pp['age']:
    if pp['yr_renovated'] = 0:
        ppnew['age'] = 2019 - pp['yr_built']
    else:
       ppnew['age'] = 2019 - pp['yr_renovated']

我也尝试过使用

for i in pp['age']:
    if pp['yr_renovated'] == 0: #truth value
        ppnew['age'] = 2019 - pp['yr_built']
    else:
       ppnew['age'] = 2019 - pp['yr_renovated']

错误提示 bool 错误

请帮助编写代码。

谢谢

最佳答案

我不确定您想要实现什么精确度(如果有不同,请在问题中添加预期输出),但在我看来是这样的:

import numpy as np

ppnew['age1'] = np.where(pp['yr_renovated']==0, 2019 - pp['yr_built'] , 2019 - pp['yr_renovated'])

我假设 ppnew 数据帧已经存在。

关于python - 使用Python迭代列中的元素以进行预处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58460503/

相关文章:

python - 使用带有固定字符串序列的 pandas 解析数据

python - 重复调用函数的函数?

c++ - C++ 的嵌套循环

python - 如何标记 pandas 中不符合单独列的特定标准的组?

Python 日志记录创建空文件

Python从多列中获取值计数并从另一列中取平均值

python - 将多个文件连接到 pandas 数据框中

python - pandas 数据框样式格式不打印指定的精度

java - 如何编写计算数组众数的方法?

javascript - 在闭包中保留变量内容时遇到问题