Python Pandas不会在循环中追加行

Python Pandas不会在循环中追加行,python,pandas,Python,Pandas,我有以下循环: lines = [] for dicom in mydicoms: dcm1 = pydicom.dcmread(dicom) identity = dcm1.PatientID age = dcm1.PatientAge sex = dcm1.PatientSex modality = dcm1.Modality finding = dcm1.StudyDescription rows = dcm1.Rows

我有以下循环:

lines = []

for dicom in mydicoms:

    dcm1 = pydicom.dcmread(dicom)


    identity = dcm1.PatientID
    age = dcm1.PatientAge
    sex = dcm1.PatientSex
    modality = dcm1.Modality
    finding = dcm1.StudyDescription
    rows = dcm1.Rows
    columns = dcm1.Columns



    new_row = {'id':identity, 'age':age, 'sex':sex, 'modality':modality, 'finding':finding, 'rows':rows, 'columns':columns}
    df.append(new_row, ignore_index = True)


    lines.append(new_row)
当我事后检查df时,它是空的

当我从循环中复制并粘贴部分代码或在另一个Jupyter单元格中执行以下操作时:

df.append(new_row, ignore_index=True)

df.append(lines, ignore_index = True)
它正确地附加它,只是不在循环内部

我缺少什么?

如所述,您应该将其分配回
df
变量

以下是您的代码和更正:

lines = []

for dicom in mydicoms:

    dcm1 = pydicom.dcmread(dicom)


    identity = dcm1.PatientID
    age = dcm1.PatientAge
    sex = dcm1.PatientSex
    modality = dcm1.Modality
    finding = dcm1.StudyDescription
    rows = dcm1.Rows
    columns = dcm1.Columns



    new_row = {'id':identity, 'age':age, 'sex':sex, 'modality':modality, 'finding':finding, 'rows':rows, 'columns':columns}
    df = df.append(new_row, ignore_index = True)


    lines.append(new_row)

您必须将其分配回循环中
df=df.append(新行,忽略索引=True)
无论如何,您不想这样做。在循环中逐行追加到数据帧效率极低。只需将行追加到列表中,然后在一次传递中将完整列表追加到数据帧中即可。True。它起作用了。这样一个小的遗漏,我自己是不会发现的,特别是考虑到同样的行在没有df=*******的情况下也能工作。为什么它在另一个单元中工作,而不是在一个循环中?现在我更糊涂了。谢谢Serge。这就是df.append(line,ignore_index=True)所做的。它本质上是一个行列表。True。它起作用了。这样一个小的遗漏,我自己是不会发现的,特别是考虑到同样的行在没有df=*******的情况下也能工作。为什么它在另一个单元中工作,而不是在一个循环中?现在我更困惑了。这里的问题不是循环。您可能正在终端中进行测试,并看到
df.append返回的新对象。尝试在终端上运行它,然后再次调用该对象,它应该是原始的
df
变量。