Неправильное Индексирование Столбцов Фрагментов Фрейма данных Python

#python #pandas #dataframe #chunking

Вопрос:

Я изучаю фрагментацию фреймов данных. Мой псевдокод прост:

  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
 

Вы можете увидеть изображение неправильной индексации строк здесь

Ответ №1:

Это немного поздно, но я хотел бы ответить на этот вопрос на случай, если у кого-то возникнет такая же проблема в будущем. Вы пытаетесь объединить два новых столбца в уже существующий фрагмент с двумя столбцами. Панды объединяют столбцы рядом, используя индекс столбцов, и индекс вашего первого фрагмента совпадает с индексом двух ваших новых столбцов, но остальные фрагменты имеют более крупные индексы, и поэтому они неправильно соединены. Сбросьте индексы остальных ваших блоков, используя

 chunk.index = range(len(chunk))
 

И это должно сработать.