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

基于Python的Spotify API多流派分类:主流派提取与高效映射

高效映射Spotify子流派到主流派的Python实现

你当前通过多次loc赋值的方式映射子流派到主流派,不仅代码冗余,数据量大时效率也偏低。更高效的方案是使用字典映射,利用字典O(1)的查找特性,一次性完成映射操作。

优化步骤:

  1. 定义子流派到主流派的映射字典
    把所有需要映射的规则集中在一个字典里,后续维护只需修改这个字典:

    genre_mapping = {
        'doo-wop': 'R&B',
        'blues': 'Blues',
        'jazz organ': 'Jazz',
        'rock-and-roll': 'Rock',
        'adult standards': 'Pop'
        # 新增映射直接在这里添加键值对即可
    }
    
  2. 生成「Main Genre」列
    有两种常用方式,根据需求选择:

    • 方式1:map方法(未匹配的子流派会返回NaN,适合需要明确识别未匹配项的场景)
      fifties_df['Main Genre'] = fifties_df['Sub Category'].map(genre_mapping)
      
    • 方式2:replace方法(未匹配的子流派会保留原内容,适合希望未匹配项不变的场景)
      fifties_df['Main Genre'] = fifties_df['Sub Category'].replace(genre_mapping)
      

进阶优化:合并提取与映射(可选)

如果不需要保留「Sub Category」列,可以直接从「Genres」列提取首个流派并完成映射,减少中间步骤:

def get_main_genre(genre_str):
    first_sub_genre = genre_str.split(',')[0].strip()
    # 未匹配的子流派返回自定义值(比如'Other'),避免出现NaN
    return genre_mapping.get(first_sub_genre, 'Other')

fifties_df['Main Genre'] = fifties_df['Genres'].apply(get_main_genre)

为什么这个方案更高效?

多次loc赋值会重复遍历DataFrame,时间复杂度随映射规则数量线性增加;而字典映射只需一次遍历DataFrame,查找操作是常数时间,代码更简洁,维护成本更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:37:49