我有一组包含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
吗?
更新:如下所述,我可以通过分解列表并测试每个列表来解决此问题。这样做时,我能够找到导致代码失败的列表部分。谢谢您的帮助。
答案 0 :(得分:2)
很显然,您的某些数据已损坏或无效,或者不是预期的格式。您说前1000个元素可以,因此请尝试下一个10000,并继续将数据二等分,直到找到导致问题的子集为止。
log2(22000)小于15,这是您试图缩小问题所在范围的二等分的最大数目。