【问题标题】:How to get value of a column based on the maximum of another column in case of DataFrame.groupby在 DataFrame.groupby 的情况下,如何根据另一列的最大值获取列的值
【发布时间】:2018-08-22 03:18:57
【问题描述】:

我有一个看起来像这样的数据框。

id YearReleased Artist count 168 2015 Muse 1 169 2015 Rihanna 3 170 2015 Taylor Swift 2 171 2016 Jennifer Lopez 1 172 2016 Rihanna 3 173 2016 Underworld 1 174 2017 Coldplay 1 175 2017 Ed Sheeran 2

我想获取每年的最大计数,然后获取相应的艺术家姓名。

类似这样的:

发行年份艺术家

2015 蕾哈娜
2016 蕾哈娜
2017 艾德希兰

我尝试使用循环遍历数据框的行并创建另一个字典,其中键为年份,值为艺术家。但是当我尝试将该字典转换为数据框时,键被映射到列而不是行。

有人可以指导我采用更好的方法来解决这个问题,而不必遍历数据框,而是使用一些内置的 pandas 方法来实现这一点吗?

【问题讨论】:

    标签: python pandas dataframe data-science


    【解决方案1】:

    您可以使用groupbytransform

    idx = df.groupby(['YearReleased'])['count'].transform(max) == df['count']
    

    然后使用这个索引器:

    df[idx]
    Out[14]: 
        id  YearReleased      Artist  count
    1  169          2015     Rihanna      3
    4  172          2016     Rihanna      3
    7  175          2017  Ed Sheeran      2
    

    【讨论】:

      【解决方案2】:

      idxmax

      df.loc[df.groupby('YearReleased')['count'].idxmax()]
      Out[445]: 
          id  YearReleased     Artist  count
      1  169          2015    Rihanna      3
      4  172          2016    Rihanna      3
      7  175          2017  EdSheeran      2
      

      【讨论】:

      • @JeetBanerjee yw :-) 快乐编码
      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2021-10-16
      • 2020-05-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2021-07-25
      • 2018-06-10
      相关资源
      最近更新 更多