используйте другой столбец для группировки, если есть две строки с максимальным числом - PullRequest
0 голосов
/ 21 марта 2020

У меня есть CSV-файл, содержащий информацию об играх, в которые играли за последние 5 десятилетий . Я собираюсь найти команду-победителя в каждом сезоне за последние годы. поэтому я должен проверить столбец очков, но в случае, если есть две команды с одинаковыми максимальными очками, я должен проверить goal_difference.

df3=pd.DataFrame(df_laliga.groupby('season')[['points']].max(axis=1).reset_index())
result=pd.merge(df3,df_laliga,how='inner',on=['points','season'])
result=result[['season','club']].set_index('season')
del result.index.name

результат будет в этом формате

enter image description here

В сезоне 2006-07 две команды имеют одинаковые очки и две команды. Я попробовал это способом ниже, но проблема не дала мне правильный результат.

df3=pd.DataFrame(df_laliga.groupby('season')[['points','goal_difference']].max(axis=1).reset_index())      

необработанные данные:

enter image description here

enter image description here

1 Ответ

0 голосов
/ 21 марта 2020

Ну, это легко сделать, используя panda sql. Вы можете сделать что-то вроде этого.

!pip install pandasql

import pandasql

query = """
        SELECT
          season,
          club
        FROM
          (SELECT
            season,
            club,
            points,
            goal_difference
          FROM
            df_laliga
          ORDER BY
            season,
            points,
            goal_difference)
        GROUP BY
          season
        """

result = pandasql.sqldf(query)

result
...