使用 groupby.size() 后获取组名
Get Groupname after using groupby.size()
我正在使用如下所示的 Billboard-Charts 数据集:
我想编写一个函数来接收任意数量的艺术家作为参数。从这些艺术家中,我想确定谁的歌曲在排行榜上停留时间最长。我已经设法编写了我想要的功能,但有一件事我想不通:
我怎样才能得到在排行榜上最长的歌曲的名字?我只是不知道如何在使用 .size() 函数后访问组名。
def determine_most_popular_performer(*performers):
results = []
for performer in performers:
results.append((performer, max(df.loc[df["performer"]==performer].groupby("song").size())))
return max(results)
print(determine_most_popular_performer("Queen", "Prince", "Michael Jackson"))
>> ('Queen', 44)
作为我想要的输出 ('Queen', 'Bohemian Rapsody', 44)
您可以使用 .idxmax()
访问最大行。
然后您应该能够 select 该行并通过以下更改访问该行中的值。请注意,我使用 .reset_index()
将 groupby 索引设置为列。
def determine_most_popular_performer(*performers):
results = []
for performer in performers:
df2 = df.loc[df["performer"]==performer].groupby("song").size().reset_index(name="value")
max_id = df2["value"].idxmax()
results.append((performer, df2.loc[max_id]["song"], df2.loc[max_id]["value"]))
return max(results)
我正在使用如下所示的 Billboard-Charts 数据集:
我想编写一个函数来接收任意数量的艺术家作为参数。从这些艺术家中,我想确定谁的歌曲在排行榜上停留时间最长。我已经设法编写了我想要的功能,但有一件事我想不通:
我怎样才能得到在排行榜上最长的歌曲的名字?我只是不知道如何在使用 .size() 函数后访问组名。
def determine_most_popular_performer(*performers):
results = []
for performer in performers:
results.append((performer, max(df.loc[df["performer"]==performer].groupby("song").size())))
return max(results)
print(determine_most_popular_performer("Queen", "Prince", "Michael Jackson"))
>> ('Queen', 44)
作为我想要的输出 ('Queen', 'Bohemian Rapsody', 44)
您可以使用 .idxmax()
访问最大行。
然后您应该能够 select 该行并通过以下更改访问该行中的值。请注意,我使用 .reset_index()
将 groupby 索引设置为列。
def determine_most_popular_performer(*performers):
results = []
for performer in performers:
df2 = df.loc[df["performer"]==performer].groupby("song").size().reset_index(name="value")
max_id = df2["value"].idxmax()
results.append((performer, df2.loc[max_id]["song"], df2.loc[max_id]["value"]))
return max(results)