如何在Pandas数据集中将单列拆分为多个独立列
数据集示例

Pandas完全可以实现把genres列的多值拆分到独立列的需求,根据你最终想要的效果,有两种常用实现方式:
方式1:按值的顺序拆分成固定序号的列
如果只是想把每个电影的类型按原字符串里的顺序拆成第1类、第2类……这种格式的列,用str.split()加expand=True参数即可,操作逻辑:
- 先确认genres列的多值分隔符,常见的是竖线
|、逗号,,替换成你数据集实际的分隔符就行 - 拆分列后给新列命名,再合并回原数据表
参考代码:
import pandas as pd # df是你加载完成的电影数据集 # 拆分genres列,expand=True会直接把拆分结果输出为多列结构 split_genres = df["genres"].str.split(pat="|", expand=True) # 给拆分后的列设置列名 split_genres.columns = [f"genre_{idx+1}" for idx in range(split_genres.shape[1])] # 和原表合并,不需要原genres列的话可以在concat前先执行df = df.drop(columns=["genres"]) df = pd.concat([df, split_genres], axis=1)
方式2:每个类型单独生成0/1标识列(独热编码)
如果是要做后续数据分析、建模,通常更实用的方式是给每个出现过的电影类型单独建一列,对应电影属于该类型就标1,不属于就标0,用str.get_dummies()可以一步实现:
# 按分隔符直接生成类型独热矩阵 genre_onehot = df["genres"].str.get_dummies(sep="|") # 合并回原表 df = pd.concat([df, genre_onehot], axis=1)
小提示:如果genres列存在空值,拆分前先执行
df["genres"] = df["genres"].fillna("")填充空值,避免拆分结果出现异常缺失。
内容的提问来源于stack exchange,提问作者Dipak Das
相关产品推荐
相关产品推荐

