You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pandas计算各阶段参与歌手数,找出歌手最多的阶段

解决方法

你之前的问题出在分组对象搞反了——要找阶段对应的歌手数量,得按阶段分组,而不是singer。另外因为同一个歌手可能在同一个阶段有多条记录(比如唱了多首歌),必须去重统计,不然会重复计数。

具体步骤和代码:

  1. 先清理空值(避免统计出错,可选但推荐):
# 移除阶段或歌手字段为空的记录
df = df.dropna(subset=['阶段', 'singer'])
  1. 按阶段分组,统计每个阶段的唯一歌手数量:
# 分组后对singer字段去重计数
stage_singer_stats = df.groupby('阶段')['singer'].nunique()
  1. 找出歌手最多的阶段:
# 获取歌手数最多的阶段名称
top_stage = stage_singer_stats.idxmax()
# 获取对应的歌手数量
top_count = stage_singer_stats.max()

print(f"参与歌手最多的阶段是:{top_stage},共{top_count}位歌手")
  1. 如果有多个阶段歌手数并列第一,用下面的代码获取所有并列阶段:
top_stages = stage_singer_stats[stage_singer_stats == top_count].index.tolist()
print(f"参与歌手最多的阶段有:{', '.join(top_stages)},均有{top_count}位歌手")

为什么之前的方法不对?

你用df.groupby('singer')得到的是每个歌手对应的阶段信息,和你要统计「每个阶段的歌手数量」的需求完全相反。而且直接用count()会把同一个歌手在同一阶段的多条记录重复计算,必须用nunique()统计唯一值数量,才是真实的歌手人数。

内容的提问来源于stack exchange,提问作者user20320394

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:30:46