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

基于演唱会Top3场次年份筛选Top2场馆的正确Pandas实现方法问询

演唱会场次统计问题解答

问题拆分

  • 找出举办演唱会场次最多的前3个年份;
  • 基于这些Top年份,找出该时段内每个年份举办演唱会场次最多的2个场馆

数据集

首先需要将字典转换为pandas DataFrame:

import pandas as pd

df_dict = {"year":["2017","2018","2018","2018","2018","2018","2019","2019","2019",'2019',"2019","2020","2020","2020","2020","2020","2021","2021","2021","2021","2021","2022",'2022','2023'],
        "venue":["V2","V1","V2","V2","V2","V2","V1","V1","V2","V2","V5","V1","V2","V2","V3","V3","V3","V3","V4","V4","V5","V1","V6","V3"]}
df = pd.DataFrame(df_dict)

问题1的实现与结果

统计各年份演唱会场次,并筛选出场次最多的年份:

# 按年份分组统计场次,并重命名列名更直观
stadium_count_per_year = df.groupby('year').agg({'venue':'count'}).rename(columns={'venue':'concert_count'})
# 获取场次最大值
max_concert_count = stadium_count_per_year['concert_count'].max()
# 筛选出等于最大值的年份
highest_concert_yr = stadium_count_per_year[stadium_count_per_year["concert_count"] == max_concert_count].index.tolist()

结果:2018、2019、2020、2021年为场次最多的年份(均为5场)

问题2的正确实现

你之前的groupby("venue","year")写法错误,pandas的groupby需要传入列名列表。正确步骤是先筛选Top年份的数据,再按年份+场馆分组统计,最后提取每个年份内场次最多的场馆。

完整代码

# 筛选出Top年份的所有数据
top_year_subset = df[df['year'].isin(highest_concert_yr)]

# 按年份和场馆分组,统计每个场馆在对应年份的场次
venue_year_count = top_year_subset.groupby(['year', 'venue']).agg({'venue':'count'}).rename(columns={'venue':'concert_count'}).reset_index()

# 对每个年份,按场次降序排序,取前2个场馆
top_venues = venue_year_count.groupby('year').apply(
    lambda group: group.nlargest(2, 'concert_count')[['year', 'venue']]
).reset_index(drop=True)

# 打印结果
print(top_venues)

输出结果

year venue
0  2018    V2
1  2018    V1
2  2019    V1
3  2019    V2
4  2020    V2
5  2020    V3
6  2021    V3
7  2021    V4

如果只需要每个年份场次最多的1个场馆(与你给出的示例输出匹配),只需将nlargest(2, 'concert_count')改为nlargest(1, 'concert_count'),输出为:

year venue
0  2018    V2
1  2019    V1
2  2020    V2
3  2021    V3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:07:42