2014-05-16 26 views
17

Chcę podzielić następującą dataframe na podstawie kolumny ZZdzielona pandy dataframe podstawie 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 

jako wyjście, chcę nowy dataframe z kolumną podzielić „N0_YLDF” do 4, jedną nową kolumnę dla każdego unikalna wartość ZZ. Jak mam to zrobić? Mogę wykonać groupby, ale nie wiem, co zrobić z zgrupowanym obiektem.

Odpowiedz

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

W R istnieje metoda ramek danych o nazwie split. To jest dla wszystkich użytkowników R tam:

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

nie należy umieścić je wszystkie w serii? kończąc na 'pd.Series (...)' – Adam

+0

To jest niesamowite. Czy istnieje prosty sposób na uzyskanie klucza identyfikującego grupę, więc mogę zwrócić listę krotek, takich jak '' '[(key, gb.get_group (x)) dla x w gb.group]' ''? – rsmith54

+0

Znalazłem to, co ułatwia: https://stackoverflow.com/questions/42513049/get-all-keys-from-groupby-object-in-pandas – rsmith54