#python #pandas #dataframe #chunking
Вопрос:
Я изучаю фрагментацию фреймов данных. Мой псевдокод прост:
- Разбейте ФАЙЛ SOURCE_FILE на несколько частей
- Загрузите кусок (с петлей)
- Добавьте столбец с предсказанной меткой и другой с уверенностью
- Запишите фрагмент на диск
- Продолжайте цикл
Первый кусок был сохранен, как и предполагалось. Новые столбцы в остальных фрагментах имеют неправильные индексы строк. Я не могу понять, почему это происходит. Буду признателен за любую помощь.
Кроме того, верен ли мой фрагментированный псевдокод? Я немного смущен, если это правильный путь.
# 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))
И это должно сработать.