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

如何用Pandas统计两座城市每周各天的音乐播放量?

修复Pandas播放量统计函数并实现需求

原代码的问题点

  • 遍历DataFrame方式错误:for track_list in df只会循环列名,而非每一行数据,得用df.iterrows()来遍历行
  • if语句末尾缺冒号:,语法不合法
  • 没有对符合条件的行做计数累加,也没返回统计结果
  • 调用函数时Monday、Springfield没加引号,会被当作变量而非字符串处理

修正后的number_tracks函数(for循环+if实现)

def number_tracks(day, city): 
    track_list_count = 0
    # 用iterrows()遍历每一行,index是行索引,row是行数据
    for index, row in df.iterrows():
        # 修正语法,添加冒号,判断当前行是否匹配指定日期和城市
        if day == row['day'] and city == row['city']:
            track_list_count += 1
    # 返回最终统计的播放量
    return track_list_count

调用函数输出指定6项统计结果

假设需要统计的6项为Springfield和Shelbyville的周一、周二、周三播放量(可按实际需求调整日期):

# 参数要以字符串形式传入,避免变量未定义错误
print("Springfield 周一播放量:", number_tracks('Monday', 'Springfield'))
print("Springfield 周二播放量:", number_tracks('Tuesday', 'Springfield'))
print("Springfield 周三播放量:", number_tracks('Wednesday', 'Springfield'))
print("Shelbyville 周一播放量:", number_tracks('Monday', 'Shelbyville'))
print("Shelbyville 周二播放量:", number_tracks('Tuesday', 'Shelbyville'))
print("Shelbyville 周三播放量:", number_tracks('Wednesday', 'Shelbyville'))

额外优化(可选)

如果不限制必须用for循环,用Pandas逻辑索引会更高效:

def number_tracks(day, city):
    # 直接过滤符合条件的行,返回行数即为播放量
    return len(df[(df['day'] == day) & (df['city'] == city)])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 20:22:46