You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用pandas处理CSV数据集拆分Items列分组报错如何解决

问题解决代码及说明

核心问题原因

  • 你执行df['Items'].str.split(',', expand=True)后没有将拆分生成的列赋值回原DataFrame,原数据中不存在Items0~Items5列,后续分组操作逻辑不符合需求
  • groupby().size()是统计分组频次的接口,和你需要的「固定商品对应固定列」的结构化输出需求完全不匹配

调整后代码

import pandas as pd 

# 读取源文件
df = pd.read_excel('filepath')

# 第一步:提取所有唯一商品,确定固定列对应的商品顺序,匹配你需要的Items0~Items5共6列
all_items = set()
df['Items'].str.split(',').apply(lambda x: [all_items.add(i.strip()) for i in x])
# 可自定义排序规则,默认按字符顺序排列,取前6个对应6列
fixed_items = sorted(all_items)[:6]
col_names = [f'Items{i}' for i in range(6)]

# 第二步:逐行匹配对应位置的商品
def match_fixed_items(row_items):
    row_item_set = set([i.strip() for i in row_items.split(',')])
    # 按固定商品顺序返回,存在则返回商品名,不存在返回空值
    return [item if item in row_item_set else '' for item in fixed_items]

# 生成拆分列并拼接原有姓名、日期列
item_cols = df['Items'].apply(match_fixed_items).apply(pd.Series)
item_cols.columns = col_names
result_df = pd.concat([df[['Name', 'Date']], item_cols], axis=1)

# 输出结构化结果
print(result_df)

效果说明

  • Items0~Items5列对应固定商品,列顺序不会随每行拆分的商品顺序变化
  • 每行对应列包含该商品则填入商品名,不包含则留空,完整保留原有Name、Date信息
  • 自动处理商品名前后多余空格,避免匹配错误

内容的提问来源于stack exchange,提问作者student911

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:30:03