我试图依次将df1df2df3df4传递到parseTwoPoleBreakers函数中。但是,仅运行df1。我的if elif语句是否有问题,导致df2df3df4不传递到parseTwoPoleBreakers函数中?

i=0
for j in range(0,4):
    if j==0:
        df=df1
    elif j==1:
        df=df2
    elif j==2:
        df=df3
    else:
        df=df4
    #execute this for each dataframe
    while (i<7):
        parseTwoPoleBreakers(7,8,"ab",i,df)
        breakerid+=1
        parseTwoPoleBreakers(9,10,"bc",i,df)
        breakerid+=1
        parseTwoPoleBreakers(11,12,"ca",i,df)
        breakerid+=1
        i+=1
    #j+=1
    print j

最佳答案

我正在尝试将df1,df2,df3和df4依次传递到parseTwoPoleBreakers函数中


您的问题很可能与if语句中的变量作用域有关,或者与while i < 7之后没有输入df1的事实有关,因为i == 7

使用列表代替df,是不是要循环返回7个i值?

for df in [df1, df2, df3, df4]:
    #execute this for each dataframe
    for i in range(7):
        parseTwoPoleBreakers(7,8,"ab",i,df)
        breakerid+=1
        parseTwoPoleBreakers(9,10,"bc",i,df)
        breakerid+=1
        parseTwoPoleBreakers(11,12,"ca",i,df)
        breakerid+=1

10-04 23:46