Vincent Buscarello
Vincent Buscarello

Reputation: 435

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

Thanks a ton for any help,

I have a list of dictionaries that I need to put in a data frame. I know the normal method in pandas is

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

where Mixed_and_poured is a list containing another list that actually holds the dictionaries

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'}, 

I could swear

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

was just working!! but when I ran it today it throws

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

Why is it looking for keys in this list now?

Upvotes: 4

Views: 21476

Answers (3)

Daniel
Daniel

Reputation: 483

I had this issue as well when a couple of items from a list were unavailable (None). The list was quite large so I didn't notice at first. Easiest quick-fix I used was to make a new list with just the items was None:

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

Upvotes: 0

Vincent Buscarello
Vincent Buscarello

Reputation: 435

So turns out I wasnt actually operating on a list of just dictionaries, there was a little bastard list hiding at the end there.

Sorry ya'll!

Upvotes: 5

Liam Foley
Liam Foley

Reputation: 7822

I can't reproduce your error with the data given, I get a KeyError.

But why even use from_records?

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

Out:

     Country Internet users
Year                       
2000  Brazil            2.9
2005  Brazil             21
2010  Brazil           40.7
2011  Brazil             45

Upvotes: 3

Related Questions