如何将Pandas DataFrame多类别列拆分并扩展行实现单类别分配?
解决Pandas DataFrame多类别列拆分问题
首先明确:必须增加DataFrame的行数,因为每个包含多类别的行需要拆分为多个单行,每行对应一个独立类别。
你已经完成了第一步——用str.split(',')把多类别字符串拆成列表,接下来只需要用explode()方法就能把列表元素拆成单独行,同时保留原数据的其他列内容。
完整实现代码
假设你的原始数据框是df,执行以下代码:
# 拆分字符串为列表,同时去除类别名称前后的空格 df['product_type_single_cat'] = df['product_type'].str.split(',').apply(lambda x: [item.strip() for item in x]) # 将列表展开为单独行,重置索引 df_exploded = df.explode('product_type_single_cat').reset_index(drop=True) # 查看目标列结果 print(df_exploded['product_type_single_cat'].head())
预期输出
执行后会得到你想要的每行一个类别的格式:
0 Q 1 B 2 J 3 D 4 J
关键说明
explode()是Pandas专门处理列表/数组类型列的方法,会把每个列表元素拆成独立行,自动复制原行的其他列数据,完全匹配你的需求。- 加入
strip()是为了处理原字符串中类别间的空格(比如"Q, B"拆分后会得到带空格的" B"),保证类别名称的准确性。
内容的提问来源于stack exchange,提问作者tigar
相关产品推荐
相关产品推荐

