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
相关产品推荐
相关产品推荐

