Сплит-файл данных панд на основе groupby

19

Я хочу разбить следующий фрейм данных на основе столбца ZZ

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

Как вывод, я хочу, чтобы новый фреймворк с столбцом «N0_YLDF» разбился на 4, один новый столбец для каждого уникального значения ZZ. Как мне это сделать? Я могу делать groupby, но не знаю, что делать с сгруппированным объектом.

    
задан user308827 16.05.2014 в 03:10
источник

2 ответа

45
gb = df.groupby('ZZ')    
[gb.get_group(x) for x in gb.groups]
    
ответ дан qwwqwwq 16.05.2014 в 03:15
источник
2

В R существует метод dataframe, называемый split. Это для всех пользователей R:

def split(df, group):
     gb = df.groupby(group)
     return [gb.get_group(x) for x in gb.groups]
    
ответ дан Jeff Mandell 13.03.2017 в 03:55
источник
  • не стоит ли все это ставить в серию? заканчивается на pd.Series (...) –  Adam 23.05.2017 в 21:47
  • Это потрясающе. Есть ли простой способ получить ключ, который идентифицирует группу, поэтому я могу вернуть список кортежей, например [(key, gb.get_group (x)) для x в gb.group]? –  rsmith54 22.08.2017 в 21:47
  • Я нашел это, что делает это проще: stackoverflow.com/questions/42513049/... –  rsmith54 22.08.2017 в 21:59
  • Просто чтобы дать ответ на комментарий (который более подробно поясняется в ссылке: [(ключ, gb.get_group (ключ)) для ключа в gb.groups] –  de1 22.11.2017 в 18:24