How to convert list of dictionary with multi same keys to dataframe?

Viewed 36

I have a list like this:

lst_link = [{'bed_room': ['link_a']}, {'bed_room': ['link_b']}, {'bed_room': ['link_c']} , {'living_room': ['link_d']}, {'living_room': ['link_e']}]

How to convert the list above to dataframe with a structure like this:

data = [
['bed_room', 'link_a'],
['bed_room', 'link_b'],
['bed_room', 'link_c'],
['living_room', 'link_d'],
['living_room', 'link_e']]
result = pd.DataFrame(data, columns=['room','link'])

I tried the coding below but it does not work:

for d in lst_link:
    for k, v in d.items():
        dic[k].append(v)
new_dict = dict(dic)
result = pd.DataFrame(dict([(k,pd.Series(v)) for k,v in new_dict.items()]))
trans_df = df.T
1 Answers

Create tuples by flatten values of dictionaries and pass to DataFrame constructor:

df = pd.DataFrame([(k, y) for d in lst_link for k, v in d.items() for y in v], 
                  columns=['room','link'])
print (df)
          room    link
0     bed_room  link_a
1     bed_room  link_b
2     bed_room  link_c
3  living_room  link_d
4  living_room  link_e

Alternative if there are lists with one value, thank you @sammywemmy:

df = pd.DataFrame([(key, ent[key][0]) for ent in lst_link for key in ent], 
                  columns = ['room', 'ink'])
Related