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

如何从Spotify数据集的genres数组列提取首个元素?

问题分析与解决方法

失败原因

你的genres列中的值并非真正的Python列表,而是字符串形式的列表(例如"['pop', 'rock']"),导致三种方法全部失效:

  • 方法1报错:你试图对字符串调用Pandas Series的str属性方法,但原生字符串对象没有该属性。
  • 方法2、3返回[:因为你直接将其当作普通字符串处理,取第一个字符自然是列表的左括号符号。

解决方法

步骤1:将字符串形式的列表转换为真实列表

使用ast.literal_eval工具,它能安全地将符合Python语法的字符串解析为对应的原生对象(比如列表):

import pandas as pd
import ast

# 读取数据集
df = pd.read_csv('artists.csv')

# 转换genres列为真实列表
df['genres'] = df['genres'].apply(ast.literal_eval)

步骤2:提取列表的首个元素

转换完成后,即可直接通过索引获取第一个元素,同时建议处理空列表的情况避免报错:

# 提取首个元素,空列表返回None
df['first_genre'] = df['genres'].apply(lambda x: x[0] if len(x) > 0 else None)

或者使用Pandas的str属性简化操作(此时列已为列表类型,Series的str方法可直接索引):

df['first_genre'] = df['genres'].str[0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:55:20