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

如何用pandas关联Excel读取的层级分类与对应商品及价格数据

实现分类与商品关联的解决方案

1. 修正Excel读取逻辑

你之前调用pd.read_excel时传入了列表类型的sheet_name参数,会返回「工作表名: 对应DataFrame」的字典,无法直接按DataFrame逻辑操作,先修正读取逻辑:

import pandas as pd
# 直接读取指定工作表,得到二维表结构的DataFrame
df = pd.read_excel('items.xlsx', sheet_name='itemSheet', engine='openpyxl')

2. 建立分类与商品的关联

你的数据里分类行的Item列带**标识,且每个分类对应唯一的Category编号,我们可以先提取分类和编号的映射,再给所有商品行打分类标签:

# 构建「分类编号: 分类名」的映射字典
category_mapping = {}
for _, row in df.iterrows():
    item_val = str(row['Item']).strip()
    # 识别分类行(两端带**)
    if item_val.startswith('**') and item_val.endswith('**'):
        cate_name = item_val.strip('*')
        cate_code = row['Category']
        category_mapping[cate_code] = cate_name

# 给所有行新增所属分类列
df['所属分类'] = df['Category'].map(category_mapping)

# 过滤掉分类行,只保留商品数据
product_df = df[~df['Item'].str.startswith('**', na=False)].reset_index(drop=True)

3. 按分类提取商品数据

单个分类提取

# 提取Electronics分类下的所有商品及价格
electronics_data = product_df[product_df['所属分类'] == 'Electronics'][['Item', 'Price']]
print(electronics_data)

# 提取HouseItems分类下的所有商品及价格
house_items_data = product_df[product_df['所属分类'] == 'HouseItems'][['Item', 'Price']]
print(house_items_data)

全部分类批量分组存储

如果分类数量多,可以直接分组存为字典,后续按需取用:

# 键为分类名,值为对应分类下的所有商品DataFrame
category_product_dict = dict(tuple(product_df.groupby('所属分类')))
# 示例:直接取Electronics分类数据
print(category_product_dict['Electronics'])

原有代码问题说明

  • 读取Excel的参数使用错误,得到的是字典而非DataFrame,后续操作会报错
  • 没有建立分类编号和分类名的映射关系,无法把分类名关联到对应的商品行
  • pd.Series.add()是数值相加的方法,不是给Series追加元素的方法,不符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:54:02