将长列表转换为Pandas DataFrame时,为什么会出现IndexError?

时间:2018-10-20 05:19:06

标签: python pandas dataframe

我有一组包含OrderedDicts的集合的列表,看起来像这样,但实际的列表包含约22,000个元素:

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

当我尝试使用题为here的问题和解决方案将此列表转换为Pandas DataFrame时,在整个列表上,出现以下错误:

IndexError: string index out of range

作为参考,引起错误的代码行在这里:

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

当我将列表缩小到1,000时,可以毫无问题地填充DataFrame。唯一的问题是当我使用〜22K元素的整个列表时。

我正在使用:

Python 3.6.5 :: Anaconda, Inc.  pandas==0.23.0  在Windows的10台计算机上的numpy 1.15.2

有人知道为什么当我使用〜22K元素列表时得到IndexError吗?

更新:如下所述,我可以通过分解列表并测试每个列表来解决此问题。这样做时,我能够找到导致代码失败的列表部分。谢谢您的帮助。

1 个答案:

答案 0 :(得分:2)

很显然,您的某些数据已损坏或无效,或者不是预期的格式。您说前1000个元素可以,因此请尝试下一个10000,并继续将数据二等分,直到找到导致问题的子集为止。

log2(22000)小于15,这是您试图缩小问题所在范围的二等分的最大数目。