anis laidani
anis laidani

Reputation: 25

how to denormalize a pandas dataframe

i have this data of pokemon and i would like do denormalize this dataframe:

#numéro      #nom           #type1          #type2            #poids
1           bulbizard        plante            NaN                 69
2           ivysaur          poison           plante              139

To:

#numéro              #nom           #type            #poids
1                   bulbizard        plante              69
2                   ivysaur          poison             139
2                   ivysaur          plante              139

Upvotes: 1

Views: 796

Answers (1)

cs95
cs95

Reputation: 402982

Use pd.lreshape (undocumented):

pd.lreshape(df, {'#type': ['#type1', '#type2']})

        #nom  #numéro  #poids   #type
0  bulbizard        1      69  plante
1    ivysaur        2     139  poison
2    ivysaur        2     139  plante

You can also use pd.wide_to_long:

(pd.wide_to_long(df, stubnames=['#type'], i=['#numéro', ], j='')
   .dropna(subset=['#type'])
   .reset_index(level=0)
   .reset_index(drop=True))

   #numéro       #nom  #poids   #type
0        1  bulbizard      69  plante
1        2    ivysaur     139  poison
2        2    ivysaur     139  plante

Upvotes: 3

Related Questions