【问题标题】:use another column for grouping ,incase there is two rows with max number in the column使用另一列进行分组,以防列中有两行具有最大数量
【发布时间】:2020-07-02 11:54:38
【问题描述】:

我有一个csv file that contains information about games played in the last 5 decades。我将在过去几年的每个赛季中找到获胜的球队。所以我应该检查积分列,但如果有两支球队的最高分相同,我应该检查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

结果就是这种格式

在 2006-07 赛季,两支球队得分相同,并且有两支球队。我按照下面的方式尝试过,但问题没有给我正确的结果。

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

原始数据:

【问题讨论】:

  • 你能提供原始(原始)数据吗?
  • 当然。我放了一些表格图片和有问题的数据链接。

标签: python pandas dataframe max pandas-groupby


【解决方案1】:

嗯,这可以使用 pandasql 轻松完成。你可以这样做。

!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

【讨论】:

  • @kosarafrooshe 哦,我想我在团队栏中有错字,应该是俱乐部,我编辑了它,你可以再试一次。确保您的原始数据位于 df_laliga 变量中。
  • 是的,我知道并更改了它,但再次出现错误。
  • 我修正了错误,但问题是结果不正确,所选的俱乐部不是本赛季的冠军
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多