电影推荐数据集genre列拆分:如何按|分隔转为多列?
最优实现:用Pandas一键拆分并生成独热编码列
嘿,这个需求在电影数据集预处理里太普遍了!最简洁高效的方式绝对是用Pandas的str.get_dummies()方法,它能直接把用|分隔的多类别字段转换成独立的二进制列(独热编码),完全匹配你的需求。
先看你的示例数据:
movieId title genres 0 1 Toy Story (1995) Adventure|Animation|Children|Comedy|Fantasy 1 2 Jumanji (1995) Adventure|Children|Fantasy 2 3 Grumpier Old Men (1995) Comedy|Romance 3 4 Waiting to Exhale (1995) Comedy|Drama|Romance 4 5 Father of the Bride Part II (1995) Comedy
完整实现步骤
- 导入Pandas并加载数据集
- 用
str.get_dummies()拆分genre列,指定分隔符为| - 将拆分后的列合并回原数据集
直接上可运行的代码:
import pandas as pd # 加载数据集(这里用你的示例数据模拟,实际可以用pd.read_csv加载文件) df = pd.DataFrame({ 'movieId': [1, 2, 3, 4, 5], 'title': [ 'Toy Story (1995)', 'Jumanji (1995)', 'Grumpier Old Men (1995)', 'Waiting to Exhale (1995)', 'Father of the Bride Part II (1995)' ], 'genres': [ 'Adventure|Animation|Children|Comedy|Fantasy', 'Adventure|Children|Fantasy', 'Comedy|Romance', 'Comedy|Drama|Romance', 'Comedy' ] }) # 拆分genre列,生成独热编码 genre_columns = df['genres'].str.get_dummies(sep='|') # 合并到原数据集 final_df = pd.concat([df, genre_columns], axis=1) # 可选:如果不需要保留原始genres列,可以删除它 # final_df = final_df.drop('genres', axis=1) # 查看结果 print(final_df.head())
结果说明
运行后你会得到每个电影类型对应的独立列,比如Adventure、Animation等,列值为1表示该电影属于这个类型,0表示不属于。这种格式非常适合后续的推荐系统建模(比如协同过滤、机器学习分类)或者数据分析。
为什么这是最优方式?
- 效率极高:Pandas的矢量化操作比手动循环处理快几个数量级,哪怕是几十万条数据的大集也能秒处理
- 代码简洁:一行代码完成拆分+编码,可读性极强,后续维护成本低
- 通用性强:不管分隔符是什么,只要修改
sep参数就能适配,还能直接和原数据集无缝合并
内容的提问来源于stack exchange,提问作者Ast
相关产品推荐
相关产品推荐

