Convert dictionary (with list elements as values) to dataframe

Question:

I have a dictionary (keys are string and values are lists) like below:

d = {
    '5/8': [[12, 15], [15, 18]],
    '12/19': [[2, 3]],
    '20/22': [[13, 18], [28, 22], [17, 110]]}

I need to convert it to a dataframe in a way that keys be in a column and repeated based on the number of list elements in corresponding values and also keys be separated into two other columns like below:

     id    x    y
  '5/8'   12   15
  '5/8'   15   18
'12/19'    2    3
'20/22'   13   18
'20/22'   28   22
'20/22'   17   110

What is the most efficient way to create this dataframe?

Asked By: Mohammad.sh

||

Answers:

Use a list comprehension.

df = pd.DataFrame(
    [(k, x, y) for k,v in d.items() for x,y in v],
    columns=['id', 'x', 'y'])
df
      id   x    y
0    5/8  12   15
1    5/8  15   18
2  12/19   2    3
3  20/22  13   18
4  20/22  28   22
5  20/22  17  110
Answered By: wjandrea
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.