Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create pandas dataframe with unequal list of values

Is there a built-in function apart from DataFrame.from_dict able to create a dataframe from a dictionary with unequal list of values?

What I am trying to do create a dataframe from the following dictionary:

d = {'g': {1, 2, 3}, 'h': {4, 5}}

so the output should look like:

   value  class
0    1        g
1    2        g
2    3        g
3    4        h
4    5        h

Is having the set instead of a list a problem?

like image 516
Kenneth Rivadeneira Guadamud Avatar asked Dec 23 '22 23:12

Kenneth Rivadeneira Guadamud


2 Answers

Yet another way using melt

pd.DataFrame(d.values(), d.keys()).T.melt().dropna()
like image 142
rafaelc Avatar answered Jan 15 '23 10:01

rafaelc


If you don't mind manually unwrapping, you can achieve this through

In [9]: pd.DataFrame([(x, k) for k, v in d.items() for x in v], columns=['value', 'class'])
Out[9]:
   value class
0      1     g
1      2     g
2      3     g
3      4     h
4      5     h
like image 44
fuglede Avatar answered Jan 15 '23 10:01

fuglede