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
变量。