首页 > 解决方案 > Python Dataframe 块列索引不正确

问题描述

我正在学习 DataFrame 分块。我的伪代码很简单:

  1. 将 SOURCE_FILE 分解成若干块
  2. 加载一个块(带循环)
  3. 添加一个带有预测标签的列和另一个有信心的列
  4. 将块写入驱动器
  5. 继续循环

第一个块按预期保存。其余块中的新列具有不正确的行索引。我无法弄清楚为什么会这样。将感谢所有帮助。

另外,我的分块伪代码是否正确?如果这是正确的方法,我有点困惑。

# create chunks
for chunk in pd.read_csv(SOURCE_FILE, chunksize = CHUNK_SIZE):
    print('BATCH:', BATCH_NUMBER)
    
    # machine translate
    for row_index, text in enumerate(chunk.title):
        print('Text:', text)
        print('Row Index:', row_index)
        (label, confidence) = MODEL.predict(text)
        label = label[0]
        confidence = confidence[0]
        chunk.loc[row_index, 'Language'] = label[9:]
        chunk.loc[row_index, 'Confidence'] = confidence

    chunk.to_csv('Chunks/chunk' + str(BATCH_NUMBER) + '.csv' , index = False)
    BATCH_NUMBER += 1

您可以在此处查看错误行索引的图像

标签: pythonpandasdataframechunking

解决方案


这有点晚了,但我想回答这个问题,以防将来有人遇到同样的问题。您正在尝试将两个新列连接到具有两列的现有块。Pandas 使用列的索引并排连接列,第一个块的索引与两个新列的索引匹配,但其余块的索引更大,因此它们没有正确连接。使用重置其余块的索引

chunk.index = range(len(chunk))

它应该工作。


推荐阅读