2014-05-16 15 views
17

voglio dividere il seguente dataframe basa sulla colonna ZZSplit panda dataframe sulla base di groupby

df = 
     N0_YLDF ZZ  MAT 
    0 6.286333 2 11.669069 
    1 6.317000 6 11.669069 
    2 6.324889 6 11.516454 
    3 6.320667 5 11.516454 
    4 6.325556 5 11.516454 
    5 6.359000 6 11.516454 
    6 6.359000 6 11.516454 
    7 6.361111 7 11.516454 
    8 6.360778 7 11.516454 
    9 6.361111 6 11.516454 

Come uscita, voglio un nuovo dataframe con il 'N0_YLDF' colonna divisa in 4, una nuova colonna per ogni valore unico di ZZ. Come faccio a fare questo? Posso fare groupby, ma non so cosa fare con l'oggetto raggruppato.

risposta

40
gb = df.groupby('ZZ')  
[gb.get_group(x) for x in gb.groups] 
2

In R è presente un metodo di dataframe denominato split. Questo è per tutti gli utenti R:

def split(df, group): 
    gb = df.groupby(group) 
    return [gb.get_group(x) for x in gb.groups] 
+0

non dovresti mettere tutto in una serie? termina con 'pd.Series (...)' – Adam

+0

Questo è sorprendente. C'è un modo semplice per ottenere la chiave che identifica il gruppo, così posso restituire una lista di tuple, come '' '[(chiave, gb.get_group (x)) per x in gb.group]' ''? – rsmith54

+0

Ho trovato questo, che rende questo facile: https://stackoverflow.com/questions/42513049/get-all-keys-from-groupby-object-in-pandas – rsmith54