Convert from dictionary to dataframe when arrays aren't equal length?

Question:

I have a dictionary like this:

{1: ["a", "b", "c"],
2: ["d", "e", "f", "g"]}

that I want to turn into a dataframe like this:

id item
1 a
1 b
1 c
2 d
2 e
2 f
2 g

but when I try use pandas.DataFrame.from_dict() I get an error because my arrays aren’t the same length. How can I accomplish what I’m trying to do here?

Asked By: nlplearner

||

Answers:

Example

data = {1: ["a", "b", "c"],
        2: ["d", "e", "f", "g"]}

Code

pd.Series(data).explode()

output(series):

1    a
1    b
1    c
2    d
2    e
2    f
2    g
dtype: object

if you want result to dataframe, use following code:

pd.Series(data).explode().reset_index().set_axis(['id', 'item'], axis=1)

output(dataframe):

    id  item
0   1   a
1   1   b
2   1   c
3   2   d
4   2   e
5   2   f
6   2   g
Answered By: Panda Kim
    pd.concat([pd.DataFrame(v,index=[i]*len(v),columns=['items']) for i,v in map1.items()])
      .rename_axis('id').reset_index()
    
      id items
    0   1     a
    1   1     b
    2   1     c
    3   2     d
    4   2     e
    5   2     f
    6   2     g
Answered By: G.G
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.