如何将Pandas DataFrame中字符串类型的列表列转为列表类型?
把DataFrame中形似列表的字符串转换为实际列表的解决方案
嗨,我来帮你搞定这个问题!你的df里Genres列看起来是列表的样子,但实际存储的是字符串类型,现在我们要把它转换成真正的Python列表。这里有几种实用的方法:
方法一:使用ast.literal_eval(首推)
这是最安全且通用的方法,它能正确解析合法的Python字面量结构(比如列表、字典),不像eval()会有执行恶意代码的风险。
步骤:
- 导入
ast模块 - 对
Genres列应用ast.literal_eval函数
import ast import pandas as pd # 对Genres列进行转换 df['Genres'] = df['Genres'].apply(ast.literal_eval) # 验证转换后的类型 print(type(df.iloc[0]['Genres'])) # 输出:<class 'list'>
方法二:字符串拆分法(适合格式规整的场景)
如果你的Genres列格式非常固定(比如始终是['元素1', '元素2']这种结构),也可以用字符串操作来拆分,但这种方法局限性较强。
# 先去掉首尾的[],再替换单引号,最后按', '拆分 df['Genres'] = df['Genres'].str.strip('[]').str.replace("'", "").str.split(', ') # 查看结果 print(df.iloc[0]['Genres']) # 输出:['Comedy', 'Drama', 'Science Fiction']
⚠️ 注意:如果你的字符串里包含逗号或者单引号的特殊情况(比如某 Genre 名称里有逗号),这种方法会出错,所以优先推荐第一种方法。
验证转换效果
转换完成后,你可以通过以下方式确认:
- 检查单个元素的类型:
type(df.iloc[0]['Genres']) - 查看列内所有元素的类型:
df['Genres'].apply(type).unique()
这样就能确保Genres列的每个元素都是真正的列表类型啦!
内容的提问来源于stack exchange,提问作者Nayana Madhu
相关产品推荐
相关产品推荐

