2016-12-13 3 views
1

Ich habe folgende Pandas Datenrahmen:Wie erweitert/entfaltet man einen Pandas Dataframe?

        Counts 
Unique_ID  Subcategory 
a1    A    10440 
       B     312 
       C     119 
a2    A     899 
       B     27 
       C     26 
...   

Jede Unique_ID drei Unterkategorien hat A, B, C, die jeweils mit einer Zählung. Es gibt eine Möglichkeit, diesen Datenrahmen so zu "entfalten", dass die Unterkategorien Spalten sind und die Zählungen ganze Zahlen sind. Hier ist was ich möchte:

Unique_ID  Subcategory_A  Subcategory_B  Subcategory_C 
a1    10440    312    119 
a2    899    27     26 

Wie macht man das?

Antwort

3

Verwenden unstack zuerst, dann entfernen Sie oberste Ebene MultiIndex von droplevel und letzten add_prefix:

df1 = df.unstack() 
df1.columns = df1.columns.droplevel(0) 
df1 = df1.add_prefix('Subcategory_') 
print (df1) 
Subcategory Subcategory_A Subcategory_B Subcategory_C 
Unique_ID            
a1     10440   312   119 
a2      899    27    26 

Wenn Index zurücksetzen muß und Spalten Namen entfernen:

df1 = df.unstack() 
df1.columns = df1.columns.droplevel(0) 
df1 = df1.add_prefix('Subcategory_') 
     .reset_index() 
     .rename_axis(None, axis=1) 
print (df1) 
    Unique_ID Subcategory_A Subcategory_B Subcategory_C 
0  a1   10440   312   119 
1  a2   899    27    26