pandas 创建CSV时在panda中获得无限循环

ruyhziif  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(101)

我正在尝试创建一个函数

  • 接收两个单独的CSV文件,
  • 找出它们之间的差异,并
  • 创建第三个CSV文件,其中填充了属于某个类别的行(如果第1行中CSV A的值出现在CSV B的任何行中)

但这让我陷入了无限循环。
它 * 应该 * 返回大约20-25行,但在VSCode放弃并关闭之前,它陷入了循环并创建了超过2亿行

def valorPivoteo(ftth_osp, pivote, dataLoader):
    # for a, sig in array_sig.iterrows():
    #     for b, sig in array_osp.iterrows():
    fila = pd.DataFrame({"FTTH": [ftth_osp], "ID": pivote})
    dataLoader = pd.concat([dataLoader, fila])
    return dataLoader


## Main which calls the previous def
for i, sig in array_sig.iterrows():
    for j, osp in array_osp.iterrows():
        if(etc):
                etc

        elif(etc):
            etc

        else:
            buscarIDOSP = buscarID(valor_sig, array_osp)
            

            if(buscarIDOSP == False):
                x = valorReemplazo(ftth_osp, ftth_sig, valor_sig, valor_osp, dataLoader)
                dataLoader = pd.concat([dataLoader, x], ignore_index=True)
                break
            elif(buscarIDOSP == True):
                y = valorPivoteo(ftth_osp, pivote, dataLoader)
                dataLoader = pd.concat([dataLoader, y], ignore_index=True)
                pivote+=1
                break

尝试过压缩代码,这样读起来就不那么累了,尝试过创建一个if so,它在i或j中的某个值达到后中断,或者在这里和那里放置一个中断,但都无济于事

cidc1ykv

cidc1ykv1#

在def中,我不应该在dataLoader和fila之间做一个concat。我应该创建fila,把它们的值加起来,然后返回它。这样就解决了这个问题。
总结一下:

def valorPivoteo(ftth_osp, valor_osp, pivote, dataLoader):
    fila = pd.DataFrame({"FTTH": [ftth_osp], "ID": pivote})
    return fila

希望这对以后的人有帮助!

相关问题