Python 快速计算机上的慢速迭代

Python 快速计算机上的慢速迭代,python,Python,我有一个房屋属性的数据集,包括房屋部分的面积,例如,“WoodDeckSF”属性表示木质装饰的面积。值为零表示没有铺板。 我想为每个包含二进制值的区域属性创建一个额外的列:decking或no decking。 我使用了以下脚本: #基于2ndFlrSF属性创建楼层列 df_满['Floors']=' 对于范围内的行(02919): 如果df_满['2ndFlrSF'][行]==0: df_满[‘楼层][行]=1 其他: df_满[‘楼层][行]=2 德尔罗 df_满[“地下室”]=“地下室”

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

#基于2ndFlrSF属性创建楼层列
df_满['Floors']='
对于范围内的行(02919):
如果df_满['2ndFlrSF'][行]==0:
df_满[‘楼层][行]=1
其他:
df_满[‘楼层][行]=2
德尔罗
df_满[“地下室”]=“地下室”
对于范围内的行(02919):
如果df_满['BsmtFinSF1'][行]==0:
df_满['Floors'][行]=0
其他:
df_满[‘楼层][行]=1
德尔罗
df_full['WoodDeck']='
对于范围内的行(02919):
如果df_满['WoodDeckSF'][行]==0:
df_满['WoodDeck'][行]=0
其他:
df_满['WoodDeck'][行]=1
德尔罗
df_满['enborch']='
对于范围内的行(02919):
如果df_满['EnclosedPortch'][行]==0:
df_满['enborch'][行]=0
其他:
df_满['enborch'][行]=1
德尔罗
df_满['OpPorch']='
对于范围内的行(02919):
如果df_full['OpenPorchSF'][行]==0:
df_满['OpPorch'][行]=0
其他:
df_满['OpPorch'][行]=1
德尔罗
df_满['Pool']=''
对于范围内的行(02919):
如果df_满['PoolArea'][行]==0:
df_已满['Pool'][行]=0
其他:
df_满['Pool'][行]=1
德尔罗
df_满['Garage']='
对于范围内的行(02919):
如果df_满['GarageArea'][行]==0:
df_满['Garage'][行]=0
其他:
df_满['Garage'][行]=1
德尔罗
这正是我想要的(我相信可以做得更好)。当我在笔记本电脑上运行它时,它的执行时间大约为5秒,但当我在功能更强大的台式机上运行它时,大约需要20多分钟。
是什么原因导致它走得这么慢?

组合成一个循环,因为每次都是同一个循环

#基于2ndFlrSF属性创建楼层列
df_满['Floors']='
df_满[“地下室”]=“地下室”
df_full['WoodDeck']='
df_满['enborch']='
df_满['OpPorch']='
df_满['Pool']=''
df_满['Garage']='
对于范围内的行(02919):
如果df_满['2ndFlrSF'][行]==0:
df_满[‘楼层][行]=1
其他:
df_满[‘楼层][行]=2
如果df_满['BsmtFinSF1'][行]==0:
df_满['Floors'][行]=0
其他:
df_满[‘楼层][行]=1
如果df_满['WoodDeckSF'][行]==0:
df_满['WoodDeck'][行]=0
其他:
df_满['WoodDeck'][行]=1
如果df_满['EnclosedPortch'][行]==0:
df_满['enborch'][行]=0
其他:
df_满['enborch'][行]=1
如果df_full['OpenPorchSF'][行]==0:
df_满['OpPorch'][行]=0
其他:
df_满['OpPorch'][行]=1
如果df_满['PoolArea'][行]==0:
df_已满['Pool'][行]=0
其他:
df_满['Pool'][行]=1
如果df_满['GarageArea'][行]==0:
df_满['Garage'][行]=0
其他:
df_满['Garage'][行]=1

我确信所有这些
del row
调用都没有帮助。您在两台机器上使用的是相同版本的Python吗<代码>范围(02919)在Python2和Python3中执行两个截然不同的操作。Python3.6在这两个版本上都执行。我也尝试过,没有删除行值,但这没有什么区别问题不是一次做的太多。每个循环大约需要3-4分钟,而这需要1秒。如果两台计算机都运行相同版本的python和依赖项,则它们的运行时间应该相似,具体取决于它们的处理器的相对速度等。但是,如果您想让代码更快,您应该执行一个循环,而不是7个循环,因为你做的工作比你需要的多7倍。@MyNameIsCaleb 1。机器的资源肯定会改变运行时间。2.拆分循环当然不是7倍,也没有理由让代码慢得多。执行7个循环与1个循环的比较实际上是该部分代码的7倍操作量。它没有回答为什么两台计算机不能在相同的时间内运行的问题,但是本代码中的任何内容都无法解决这个问题,如果它们都在相同的版本和依赖项上,那么这对于StackOverflow来说并不是一个真正相关的问题。