关于python:AttributeError:尝试从dicts列表创建DataFrame时,’list’对象没有属性’keys’

AttributeError: 'list' object has no attribute 'keys' when attempting to create DataFrame from list of dicts

非常感谢您的帮助,

我有一个字典列表,我需要放在一个数据框中。 我知道熊猫的正常方法是

1
final_df=pd.DataFrame.from_records(Mixed_and_Poured[0], index='year')

其中Mixed_and_poured是一个列表,其中包含另一个实际包含字典的列表

1
2
print Mixed_and_Poured
[[{'Country': 'Brazil', u'Internet users': '2.9', 'Year': '2000'}, {'Country': 'Brazil', u'Internet users': '21', 'Year': '2005'}, {'Country': 'Brazil', u'Internet users': '40.7', 'Year': '2010'}, {'Country': 'Brazil', u'Internet users': '45', 'Year': '2011'},

我发誓

1
final_df=pd.DataFrame.from_records(Mixed_and_Poured[0], index='year')

刚刚工作!! 但是当我今天跑它时它会抛出

1
AttributeError: 'list' object has no attribute 'keys'

为什么现在在这个列表中寻找密钥?


事实证明我实际上并没有在一个只是字典的列表上运行,那里有一个隐藏在那里的小混蛋列表。

对不起,你会的!


我无法使用给定的数据重现您的错误,我得到一个KeyError。

但为什么甚至使用from_records?

1
pd.DataFrame(Mixed_and_Poured[0]).set_index('Year')

日期:

1
2
3
4
5
6
     Country Internet users
Year                      
2000  Brazil            2.9
2005  Brazil             21
2010  Brazil           40.7
2011  Brazil             45


当列表中的一些项目不可用时,我也遇到了这个问题(无)。 这个名单很大,所以起初我没有注意到。 我使用的最简单的快速修复是创建一个新列表,只有项目是无:

1
2
3
4
list1 = [2,3,4, None, 2]
list1 = [item for item in list1 if item != None]
list1
[2, 3, 4, 2]