Pandas data frame to dictionary using dict comprehension

Question:

I have a data frame of cities and info about them. I need to make a dictionary with the countries where the cities are located as keys of my dictionary and a list of the cities in that country as values of my dictionary. All of this using dictionary comprehension and the columns df[‘country’] and df[‘city’].

I’ve tried so many things but always getting the error that pandas series are mutable and non hashable. Tried converting it into list of strings and getting the same error. Furthermore I dont know how to make an ‘if’ in the dict comprehension to include the city in the value list of its country key.

I have:
`

key = df['country'].tolist()
value = df['city']
Megacities_dict = {key: value for value in df if key == df['country'] }

`
And I expected to have an output like:

{'Japan': ['Osaka', 'Tokyo', ...], 'China': ['Beijing'...], ...}

But instead im getting the error:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Asked By: Fran Rodriguez

||

Answers:

Simple. just groupby country and aggregate cities using list then use to_dict to get the dict

df.groupby('country')['city'].agg(list).to_dict()
Answered By: Shubham Sharma