Я пытаюсь записать файлы CSV в базу данных elasticsearch, но сначала я хочу передать их как json, и я продолжаю получать эту ошибку, и я не знаю, как ее исправить...
Вот код ниже
from haystack.document_store.elasticsearch import ElasticsearchDocumentStore
document_store = ElasticsearchDocumentStore(host = "localhost", username = "", password = "", index = "document")
import pandas as pd
df = pd.read_csv('Data/FINAL_CORD_DATA_0.csv')
dicts = df.to_dict('records')
final_dicts = []
for each in dicts:
tmp = {}
tmp['text'] = each.pop('body_text')
tmp['meta'] = each
final_dicts.append(tmp)
Вот сообщение об ошибке, которое я получаю, когда запускаю последнюю ячейку
KeyError Traceback (most recent call last)
<ipython-input-13-e5e7b4b7ff5a> in <module>
2 for each in dicts:
3 tmp = {}
----> 4 tmp['text'] = each.pop('body_text')
5 tmp['meta'] = each
6 final_dicts.append(tmp)
KeyError: 'body_text'






to_dict() в pandas означает, что обычно NaN-значения в исходном DataFrame приводят к тому, что соответствующая пара ключ-значение dicts вообще не создается. Я мог представить, что части DataFrame содержат NaN (или пустые строки, которые были автоматически преобразованы в NaN), поэтому некоторые словари могут не иметь пары ключ-значение для 'body_text'.
Вы можете поймать этот случай, например. заполнив пустую строку для этих диктов, например:
for each in dicts:
tmp = {}
if 'body_text' in each:
tmp['text'] = each.pop('body_text')
else:
tmp['text'] = ""
tmp['meta'] = each
final_dicts.append(tmp)