我一直在使用机器上的外壳数据集。在尝试减小数据集的尺寸时,我想将2列(即yr_built)和yr_renovated合并到新的列“ age”(房屋)。
我正在尝试从2个预定义列((year_built)和(year_renovated))创建新的列年龄。 “翻新的年份”列具有年份(例如,如果翻新则为1991)或如果未翻新则为0的值。
我要在此处使用的逻辑是,如果进行了装修,则建筑物的使用年限是当前的年-即装修年。
[age = 2019 - year_renovated]
如果未进行过装修:建筑物的年龄为当前年份-建筑物的年份,即
[age = 2019 - year_built]
ppnew数据的图像显示在下图中
我已经尝试过使用for循环,其代码如下:
the dataframe is in this pic attachment
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']
错误提示布尔错误
plz代码帮助。
谢谢
答案 0 :(得分:0)
df['age'] = list(zip(2019 - df['yr_built'], 2019 - df['yr_renovated'], df['yr_renovated'] != 0))
df
Out[1]:
price bedrooms bathrooms floors view grade yr_built yr_renovated zipcode age
0 2219000 3 1.00 1 0 7 1955 0 500178 (64, 2019, False)
1 5380000 3 2.25 2 0 7 1951 1991 500125 (68, 28, True)
2 1800000 2 1.00 1 0 6 1933 0 500028 (86, 2019, False)
3 6040000 4 3.00 1 0 7 1965 0 500136 (54, 2019, False)
4 5100000 3 2.00 1 0 8 1987 0 500074 (32, 2019, False)
df['age'] = [(x[0],x[1])[x[2]] for x in df['age']]
Out[2]:
price bedrooms bathrooms floors view grade yr_built yr_renovated zipcode age
0 2219000 3 1.00 1 0 7 1955 0 500178 64
1 5380000 3 2.25 2 0 7 1951 1991 500125 28
2 1800000 2 1.00 1 0 6 1933 0 500028 86
3 6040000 4 3.00 1 0 7 1965 0 500136 54
4 5100000 3 2.00 1 0 8 1987 0 500074 32