首页 > 解决方案 > for 循环过早停止而未覆盖参考列表中的所有项目

问题描述

我正在分析一个住房数据集,它具有时间(年份)特征,其对目标变量(SalePrice)的影响是我试图单独可视化的。

我这样做的方法是找到其他年份特征的增量和 YrSold 特征以获得房屋/改造/车库等的“年龄”,最后可视化它们如何影响 SalePrice

问题是,如果没有计算和创建时间特征的各个“年龄”的新列。仅创建一个新特征列,如下所示:

# creating a list of temporal features
temp_feature = [feat for feat in train_df if 'Yr' in feat or 'Year' in feat] 
temp_feature

输出:

['YearBuilt', 'YearRemodAdd', 'GarageYrBlt', 'YrSold']

循环:

vizdata = train_df.copy() # separating from main dataset

# looping through all
for x in temp_feature:
    if x != 'YrSold':
        vizdata[x+'new'] = vizdata['YrSold']-vizdata[x] 

当它应该添加 YrBltnew 和 YrRemodAddnew 时,输出 vizdata.head() 仅在末尾显示 GarageYrBltnew,而不显示其他。我猜这个问题与循环如何遍历列表和 if 条件有关。

谢谢

标签: pythonpandasdataframedata-sciencecalculated-columns

解决方案


这不是一个真正的答案,但不适合评论。您的代码看起来不错,应该可以工作。这对我有用:

temp_feature = ['YearBuilt', 'YearRemodAdd', 'GarageYrBlt', 'YrSold']
vizdata = pd.DataFrame(columns = temp_feature, data = [[1,2,3,4]])
for x in temp_feature:
    if x != 'YrSold':
        vizdata[x+'new'] = vizdata['YrSold']-vizdata[x] 
vizdata

生产

YearBuilt   YearRemodAdd    GarageYrBlt YrSold  YearBuiltnew    YearRemodAddnew GarageYrBltnew
0   1   2   3   4   3   2   1

您使用的是哪个版本的熊猫


推荐阅读