Группировать мои данные по значениям в одном столбце? - PullRequest
1 голос
/ 05 февраля 2020

Как я могу сгруппировать мой фрейм данных на основе значений в одном столбце?

Ввод:

ID     Name     Revenue     Cluster
1234   John     123         1
1235   Jane     761         2
1237   Mary     276         3
1297   Paul     439         2
1376   Peter    254         1
1425   David    532         3

Ожидаемый вывод:

Cluster 1                  Cluster 2               Cluster 3
ID     Name     Revenue    ID    Name   Revenue    ID     Name   Revenue
1234   John     123        1235  Jane   761        1237   Mary   276
1376   Peter    254        1297  Paul   439        1425   David  532

Есть ли способ сделать это с помощью .groupby? Я поиграл с этим, но, похоже, не смог получить нужный мне формат. Есть ли лучший / более простой способ?

1 Ответ

2 голосов
/ 05 февраля 2020

Используйте GroupBy.cumcount для счетчика, затем измените его на DataFrame.set_index с DataFrame.unstack, измените порядок в MultiIndex в столбцах уровня, сортировка и последнее добавление Cluster значений:

df = (df.set_index([df.groupby('Cluster').cumcount(), 'Cluster'])
        .unstack()
        .swaplevel(1,0, axis=1)
        .sort_index(axis=1)
        .rename(columns=lambda x: f'Cluster {x}', level=0))
print (df)
Cluster Cluster 1                Cluster 2               Cluster 3         \
               ID   Name Revenue        ID  Name Revenue        ID   Name   
0            1234   John     123      1235  Jane     761      1237   Mary   
1            1376  Peter     254      1297  Paul     439      1425  David   

Cluster          
        Revenue  
0           276  
1           532  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...