我一直在使用住房数据集进行机器学习。 在尝试减少数据集的维度时,我想将 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/