Почему я получаю IndexError при преобразовании длинного списка в Pandas DataFrame? - PullRequest
0 голосов
/ 20 октября 2018

У меня есть список наборов, которые содержат OrderedDicts, которые выглядят так, но фактический список содержит ~ 22 000 элементов:

o_dict_list = [(OrderedDict([('StreetNamePreType', 'ROAD'), ('StreetName', 'Coffee')]), 'Ambiguous'),
       (OrderedDict([('StreetNamePreType', 'AVENUE'), ('StreetName', 'Washington')]), 'Ambiguous'),
       (OrderedDict([('StreetNamePreType', 'ROAD'), ('StreetName', 'Quartz')]), 'Ambiguous')]

Когда я пытаюсь преобразовать этот список в Pandas DataFrame, используя вопрос иотмеченное решение здесь , во всем списке я получаю следующую ошибку:

IndexError: string index out of range

Для справки строка кода, которая вызывает ошибку, здесь:

pd.DataFrame([o_dict_list[i][0] for i, j in enumerate(o_dict_list)])

Когда я урежу список до 1000, я могу получить DataFrame для заполнения без проблем.Единственная проблема, когда я использую весь список элементов ~ 22K.

Я использую:

Python 3.6.5 :: Anaconda, Inc. pandas==0.23.0 numpy 1.15.2 на машине Window 10.

Кто-нибудь знает, почему я получаю IndexError, когда я использую список элементов ~ 22K?

Обновление: Как отмечено ниже, я смог решить эту проблемупроблема путем разбивки списка и тестирования каждого.При этом мне удалось найти ту часть списка, которая вызывала сбой кода.Спасибо за помощь.

1 Ответ

0 голосов
/ 20 октября 2018

Очевидно, что некоторые из ваших данных повреждены или недействительны или не в ожидаемом формате.Вы говорите, что первые 1000 элементов в порядке, поэтому попробуйте следующие 10000 и продолжайте разбивать данные на части, пока не найдете подмножество, вызывающее проблему.

log2 (22000) меньше 15, что является максимальным числомпополам, вам нужно попытаться сузить суть проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...