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

Pandas编写指定日期城市统计歌曲播放量函数求助

实现指定统计函数的方法

你需要的number_tracks函数按照「逻辑索引连续过滤」的要求实现如下:

def number_tracks(day, city):
    # 第一层过滤:匹配传入的城市参数
    city_match = df['city'] == city
    city_filtered_df = df[city_match]
    # 第二层过滤:在城市筛选结果上匹配传入的星期参数
    day_match = city_filtered_df['day'] == day
    final_filtered_df = city_filtered_df[day_match]
    # 过滤结果的行数就是对应条件下的歌曲播放总数
    return len(final_filtered_df)

逻辑说明

  • 逻辑索引的核心是生成与DataFrame等长的布尔序列,序列中值为True的位置对应行就会被保留,两次连续索引就完成了两个条件的递进筛选,完全匹配需求要求的实现方式。
  • 数据集每一行对应一条歌曲播放记录,因此过滤后结果的行数(用len()统计)就是目标播放量。

调用测试示例

直接传入对应的星期、城市参数即可得到结果:

# 计算斯普林菲尔德周一的歌曲播放量
print(number_tracks('Monday', 'Springfield'))
# 计算谢尔比维尔周五的歌曲播放量
print(number_tracks('Friday', 'Shelbyville'))

现有代码的可优化点

你之前写的预处理部分有两个小问题可以修正:

  • replace_wrong_genres函数逻辑错误:for genre in df遍历的是DataFrame的列名,不是流派列的值,且replace操作没有指定修改原表,实际不会生效。修复后的函数不需要循环,直接写为:
    def replace_wrong_genres(wrong_genres, correct_genre):
        df['genre'].replace(wrong_genres, correct_genre, inplace=True)
    
  • 预处理中连续写了两次df.drop_duplicates(),第二次去重是冗余操作,可以删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:45:33