如何在DataFrame.groupby

时间:2018-03-13 18:31:42

标签: python pandas dataframe data-science

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

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

我想获得每年的最大数量,然后获得相应的艺术家名称。

这样的事情:

YearReleased Artist

2015 Rihanna
2016蕾哈娜
2017 Ed Sheeran

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

查看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