2017-06-13 2 views
0

Ich habe folgenden Datenrahmen Pandas mit:Pandas Verwendung GROUPBY und automatisch Daten füllen

enter image description here Die Header-Säulenelemente, die eine nan sollte das letzte Wort gegründet sagen. Somit sollte die Spaltenkopf sein:

nan Ciclo Indoor Ciclo Indoor Ciclo Innen Ciclo Innen Body Pump Body Pump ....

Danach möchte ich durch den Sport (Zyklus Innen usw .. GROUPBY .).

Antwort

1

Sie können Series.fillna mit method='ffill' (.ffill) verwenden, aber es mit Index nicht funktioniert, so müssen Index.to_series zuerst:

cols = [np.nan, 'Ciclo Indoor', np.nan, np.nan, 'Body Pump', np.nan, np.nan] 
df = pd.DataFrame([[1,0,1,2,1,0,1]], columns = cols) 
print (df) 

    NaN Ciclo Indoor NaN NaN Body Pump NaN NaN 
0 1    0 1 2   1 0 1 

df.columns = df.columns.to_series().ffill() 
print (df) 
    NaN Ciclo Indoor Ciclo Indoor Ciclo Indoor Body Pump Body Pump \ 
0 1    0    1    2   1   0 

    Body Pump 
0   1 

Last groupby von Spaltennamen axis=1 und level=0 und aggregieren sum oder mean ...

df1 = df.groupby(axis=1, level=0).sum() 
print (df1) 
    Body Pump Ciclo Indoor 
0   2    3