pandas使用str.split拆分DataFrame列仅返回首列如何解决?
pandas拆分Genres列仅返回第一列的修复方案
问题原因
你代码的问题出在拆分赋值的步骤:str.split()设置expand=True后会返回多列的DataFrame,你将这个多列结构直接赋值给单个列df1['Genres']时,pandas默认仅会取第一列赋值,因此只能拿到每个条目的首个分类。
修复代码
import pandas as pd # pd.read_csv本身就返回DataFrame,无需额外套pd.DataFrame() df1 = pd.read_csv('Dataset01.csv') # 一次性清洗Genres列的多余符号 df1['Genres'] = df1['Genres'].str.strip('[]').str.replace("'", "", regex=False) # 拆分列,同时去除每个分类前后的多余空格 genres_split = df1['Genres'].str.split(",", expand=True).apply(lambda x: x.str.strip(), axis=1) # 固定为7列,不足的位置填充空值(符合你预期返回7列的需求) genres_split = genres_split.reindex(columns=range(7), fill_value='') # 给拆分后的列命名 genres_split.columns = [f'Genres_{i+1}' for i in range(7)] # 把拆分后的列合并到原DataFrame,drop('Genres', axis=1)是删除原来的未拆分列,不需要可以去掉这部分 df1 = pd.concat([df1.drop('Genres', axis=1), genres_split], axis=1)
运行效果
处理完成后,df1会新增7个Genres分类列,分别存储每条数据的第1到第7个分类,没有对应分类的位置为空值。
内容的提问来源于stack exchange,提问作者Victor Guidi
相关产品推荐
相关产品推荐

