4

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?

3
  • I am pouring over this related question put cant figure out whats wrong with my solution here Commented Jan 16, 2016 at 19:57
  • Do you need another [0]? Evidently it's expecting a dictionary. Commented Jan 16, 2016 at 19:59
  • Using pandas 0.16.2 and Python 3.4, I get a good dataframe if I correct the index to 'Year' (note capitalization) and I remove the trailing comma from Mixed_and_Poured and add two closing brackets ]] instead. Commented Jan 16, 2016 at 20:06

3 Answers 3

5

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!

Sign up to request clarification or add additional context in comments.

Comments

3

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

3 Comments

I get AttributeError: 'list' object has no attribute 'keys' still, my data is a bit longer should I post the whole thing? I was using from_records because an answer from the link I posted reccomended it
in case any one is interested, I found out my data is all structured wrong. lemme fixit and post what I get
figured it out and im set! there was a list nested at the very end of my list of dictionaries :b
0

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]

2 Comments

Ha, been some time since I looked at this! Only issue I see there is a vague try except, which is an anti-pattern. Consider catching a specific exception like an AttributeError or you may accidentally suppress a serious flaw in the code that will be agonizing to find later. stackoverflow.com/questions/14797375/…
You are right, try-excepts should be more specific. A different approach would be to check if the object is None.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.