Search code examples
pythonpandasdataframepivotunpivot

group or unpivot df not considering empty values


I have a df like this :

PRODUCTNUMBER Jerarquía principal Jerarquía secundaria marcas COT Ecommerce dabra-catalog Dexter-ecommerce Stockcenter-ecommerce
AD802309 Medias-Hombre ADIDAS 950699 NaN NaN NaN NaN
AD481076 NaN Adidas 950699 NaN NaN NaN NaN
AD481137 Medias-Hombre Adidas 950699 Medias-Hombre Medias-Hombre Medias-Hombre Medias-Hombre

and I need to get this output:

PRODUCTNUMBER PRODUCTCATEGORYNAME PRODUCTCATEGORYHIERARCHYNAME
AD802309 Medias-Hombre Jerarquía principal
AD802309 ADIDAS Jerarquía secundaria marcas
AD802309 950699 COT
AD481076 Adidas Jerarquía secundaria marcas
AD481076 950699 COT
AD481137 Medias-Hombre Jerarquía principal
AD481137 Adidas Jerarquía secundaria marcas
AD481137 950699 COT
AD481137 Medias-Hombre Ecommerce
AD481137 Medias-Hombre dabra-catalog
AD481137 Medias-Hombre Dexter-ecommerce
AD481137 Medias-Hombre Stockcenter-ecommerce

is it possible? "NaN" values must not be transposed


Solution

  • Try with melt

    out = df.melt('PRODUCTNUMBER',
                   value_name='PRODUCTCATEGORYHIERARCHYNAME',
                   var_name='PRODUCTCATEGORYNAME').dropna()
    Out[201]: 
       PRODUCTNUMBER          PRODUCTCATEGORYNAME PRODUCTCATEGORYHIERARCHYNAME
    0       AD802309          Jerarquía principal                Medias-Hombre
    2       AD481137          Jerarquía principal                Medias-Hombre
    3       AD802309  Jerarquía secundaria marcas                       ADIDAS
    4       AD481076  Jerarquía secundaria marcas                       Adidas
    5       AD481137  Jerarquía secundaria marcas                       Adidas
    6       AD802309                          COT                       950699
    7       AD481076                          COT                       950699
    8       AD481137                          COT                       950699
    11      AD481137                    Ecommerce                Medias-Hombre
    14      AD481137                dabra-catalog                Medias-Hombre
    17      AD481137             Dexter-ecommerce                Medias-Hombre
    20      AD481137        Stockcenter-ecommerce                Medias-Hombre