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

