Как вернуть отдельную группу из кадра данных панды - PullRequest
0 голосов
/ 17 октября 2019

У меня есть датафрейм с бомбардирами, и я хотел бы выделить группу с наибольшим количеством очков в массив. Эта группа может содержать более одного предмета (в приведенном ниже примере есть два игрока с 8 целями).

Так что в приведенном ниже примере это приведет к массиву, подобному этому:

[{'goals': 8, 'name': 'Sergio Agüero', 'team': 'Manchester City'}, {'goals': 8, 'name': 'Tammy Abraham', 'team': 'Chelsea'}]

import pandas as pd 

data = [
    {
        "name": "Sergio Ag\u00fcero",
        "team": "Manchester City",
        "goals": "8"
    },
    {
        "name": "Tammy Abraham",
        "team": "Chelsea",
        "goals": "8"
    },
    {
        "name": "Pierre-Emerick Aubameyang",
        "team": "Arsenal",
        "goals": "7"
    },
    {
        "name": "Raheem Sterling",
        "team": "Manchester City",
        "goals": "6"
    },
    {
        "name": "Teemu Pukki",
        "team": "Norwich",
        "goals": "6"
    }
]

top_scorers = pd.DataFrame(data, columns=["name", "team", "goals"])

top_scoring_group = top_scorers.groupby("goals")

Ответы [ 2 ]

2 голосов
/ 17 октября 2019

IIUC,

(top_scorers[top_scorers['goals'].eq(top_scorers['goals'].max())]
     .to_dict('rows')
)

Выход:

[{'name': 'Sergio Agüero', 'team': 'Manchester City', 'goals': '8'},
 {'name': 'Tammy Abraham', 'team': 'Chelsea', 'goals': '8'}]
0 голосов
/ 17 октября 2019
top_scoring_group = top_scorers.groupby("team", as_index=False)['goals'].sum().nlargest(1, 'goals', keep='all')['team']

Это даст командам наибольшее количество голов и сохранит их всех, если их больше одного.

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