#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)