我使用嵌套for循环从数据帧读取选择性数据。 然后我需要实现一些数学公式来处理这些选择性数据。 出于这个原因,我实现了一个动态逻辑,将列表“idx”和“cols”中的数据的索引和列编号分隔开。 但我应用于读取此数据的嵌套For循环执行的次数出乎意料地多
以下是示例代码及其输出:
idx = [1, 2]
cols = [2, 2]
count = 0
def run_imputation():
global count
for i in idx:
for col in cols:
count += 1
print(count)
dfClean.iloc[i, col] = tempOut[i,col] #Need to do such and more computations
origVal.append(dfClean_Orig.iloc[i, col])
impuVal.append(dfClean.iloc[i, col])
%timeit run_imputation()
OUTPUT:
1
2
......
32444
所以我的问题是为什么For循环执行32444次,而它应该只执行4次。 除了Python中复杂的for循环之外,还有没有更好的方法来进行如下所示的选择性数据计算
您尚未显示完整的代码。因此,我只根据您的编码风格回答。 我认为应该多次运行函数。通过不使用任何全局变量,可以避免看到错误的迭代次数
例如,您可以尝试更改编码样式,如下所示:
对于问题的第一部分:它运行32444次而不是4次,因为您正在使用%timeit magic命令和函数调用run_imputation()
如果不想测量函数的执行时间,则不需要使用%timeit
您可以在此处找到有关该主题的更多详细信息:What is %timeit in python?
这回答了主要问题:“Python For循环执行意外数量的循环”
你问题的第二部分我不太清楚。如果你能详细说明的话,我也可以帮你
而不是: %timeit run_插补()
我用过: run_插补()
相关问题 更多 >
编程相关推荐