Как сделать простую группировку без какой-либо статистики, такой как среднее значение или количество в Пандах?

#python #pandas #dataframe #group-by

#питон #панды #фрейм данных #группа-по

Вопрос:

У меня есть фрейм данных со многими столбцами.

Я хочу сделать что-то вроде инструмента сводки в Alteryx. т. е. простую группу по. Меня не интересует статистика, такая как среднее значение, количество или размер.

Мне не нужен иерархический вывод

Как я могу это сделать?

 df.head()   Unnamed: 0 home_odds draw_odds away_odds country league datetime home_team away_team home_score away_score -- ------------ ----------- ----------- ----------- --------- ---------------- ------------------- --------------- ----------- ------------ ------------  0 0 1.36 4.31 7.66 Brazil Copa do Nordeste 2020-02-07 00:00:00 Sport Recife Imperatriz 2 2  1 1 2.62 3.3 2.48 Brazil Copa do Nordeste 2020-02-02 22:00:00 ABC America RN 2 1  2 2 5.19 3.58 1.62 Brazil Copa do Nordeste 2020-02-02 00:00:00 Frei Paulistano Nautico 0 2  3 3 2.06 3.16 3.5 Brazil Copa do Nordeste 2020-02-02 22:00:00 Botafogo PB Confianca 1 1  4 4 2.19 2.98 3.38 Brazil Copa do Nordeste 2020-02-02 22:00:00 Fortaleza Ceara 1 1  

Я хочу, чтобы простая таблица была сгруппирована по этим двум столбцам

напр.

 country league -- --------- ----------------  0 Brazil Copa do Nordeste  1 World World Cup  2 Australia FFA Cup  3 Australia A League  4 Brazil Serie A  

Каков правильный код для этого?

Комментарии:

1. Пожалуйста, предоставьте простой воспроизводимый ввод фрейма данных. На вашем выходе — Чемпионат мира. Откуда это взялось ? Предоставьте достаточные данные. Между тем, возможно, вы думаете о функции drop_duplicates

2. Да! Это делает свою работу. Спасибо!

Ответ №1:

Если вы хотите создать фрейм данных с двумя столбцами, который показывает, в какой стране какая лига, затем выберите соответствующие столбцы и .drop_duplicates метод:

 out = df[['country', 'league']].drop_duplicates()  

Но если вы хотите создать фрейм данных, в котором хранятся данные из других столбцов, вам может потребоваться сделать:

 out = df.groupby(['country', 'league']).agg(list)  

Ответ №2:

Вы можете попробовать использовать функцию drop_duplicates (). Например, в первом кадре данных ниже вы можете увидеть 13 записей, а во втором-только 6. Это произошло благодаря df = df.drop_duplicates()

введите описание изображения здесь