在快速计算机上缓慢迭代

2024-06-03 08:23:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个房屋属性的数据集,包括部分房屋的面积,例如,属性'WoodDeckSF'表示木地板的面积。值为零表示没有甲板。 我想为每个包含二进制值的区域属性创建一个额外的列:decking或no decking。 我使用了以下脚本:

#Create a Floors column based on the 2ndFlrSF attribute
df_full['Floors'] = ''
for row in range(0,2919):
    if df_full['2ndFlrSF'][row] == 0:
        df_full['Floors'][row] = 1
    else:
        df_full['Floors'][row] = 2
del row
df_full['Basement'] = ''
for row in range(0,2919):
    if df_full['BsmtFinSF1'][row] == 0:
        df_full['Floors'][row] = 0
    else:
        df_full['Floors'][row] = 1
del row
df_full['WoodDeck'] = ''
for row in range(0,2919):
    if df_full['WoodDeckSF'][row] == 0:
        df_full['WoodDeck'][row] = 0
    else:
        df_full['WoodDeck'][row] = 1
del row
df_full['EnPorch'] = ''
for row in range(0,2919):
    if df_full['EnclosedPorch'][row] == 0:
        df_full['EnPorch'][row] = 0
    else:
        df_full['EnPorch'][row] = 1
del row
df_full['OpPorch'] = ''
for row in range(0,2919):
    if df_full['OpenPorchSF'][row] == 0:
        df_full['OpPorch'][row] = 0
    else:
        df_full['OpPorch'][row] = 1
del row
df_full['Pool'] = ''
for row in range(0,2919):
    if df_full['PoolArea'][row] == 0:
        df_full['Pool'][row] = 0
    else:
        df_full['Pool'][row] = 1
del row
df_full['Garage'] = ''
for row in range(0,2919):
    if df_full['GarageArea'][row] == 0:
        df_full['Garage'][row] = 0
    else:
        df_full['Garage'][row] = 1
del row

这正是我想要的(我相信它可以做得更好)。当我在笔记本电脑上运行它时,它的执行时间约为5秒,但当我在功能更强大的桌面上运行它时,大约需要20多分钟。 是什么导致它走得这么慢


Tags: indfforif属性rangeelsefull
1条回答
网友
1楼 · 发布于 2024-06-03 08:23:27

合并使其成为单个循环,因为每次都是相同的循环

#Create a Floors column based on the 2ndFlrSF attribute
df_full['Floors'] = ''
df_full['Basement'] = ''
df_full['WoodDeck'] = ''
df_full['EnPorch'] = ''
df_full['OpPorch'] = ''
df_full['Pool'] = ''
df_full['Garage'] = ''

for row in range(0,2919):
    if df_full['2ndFlrSF'][row] == 0:
        df_full['Floors'][row] = 1
    else:
        df_full['Floors'][row] = 2

    if df_full['BsmtFinSF1'][row] == 0:
        df_full['Floors'][row] = 0
    else:
        df_full['Floors'][row] = 1

    if df_full['WoodDeckSF'][row] == 0:
        df_full['WoodDeck'][row] = 0
    else:
        df_full['WoodDeck'][row] = 1

    if df_full['EnclosedPorch'][row] == 0:
        df_full['EnPorch'][row] = 0
    else:
        df_full['EnPorch'][row] = 1

    if df_full['OpenPorchSF'][row] == 0:
        df_full['OpPorch'][row] = 0
    else:
        df_full['OpPorch'][row] = 1

    if df_full['PoolArea'][row] == 0:
        df_full['Pool'][row] = 0
    else:
        df_full['Pool'][row] = 1

    if df_full['GarageArea'][row] == 0:
        df_full['Garage'][row] = 0
    else:
        df_full['Garage'][row] = 1

相关问题 更多 >