在 DataFrame.groupby 的情况下,如何根据另一列的最大值获取一列的值
How to get value of a column based on the maximum of another column in case of DataFrame.groupby
我有一个看起来像这样的数据框。
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 方法来实现这个吗?
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
看看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
我有一个看起来像这样的数据框。
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 方法来实现这个吗?
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
看看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