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

如何用Python Pandas将Excel数据转为按分类分组的字典格式?

问题与解决方案

需求说明

现有如下Excel数据:

Category  Item
  old       apple
  new       mango
  old       grape
  new       ginger

需要用Python Pandas将其转换为指定格式的字典,最终目标输出有两种:

  1. 基础目标:
{'old': ['apple', 'grape'], 'new': ['mango', 'ginger']}
  1. 调整后目标:
{'Skills': {'old': ['apple', 'grape'], 'new': ['mango', 'ginger']}}

原代码及问题

使用参考代码运行后,重复分类下的内容被覆盖,仅保留最后一条数据:

原代码

import pandas as pd

df = pd.read_excel("Skills.xlsx", index_col=0)
df = df.where(pd.notnull(df), None)

print(df.to_dict())

错误输出

{'Skills': {'old': 'grape', 'new': 'ginger'}}

修改后的代码及解释

实现调整后目标的代码

import pandas as pd

# 读取Excel,不提前设置索引避免数据覆盖
df = pd.read_excel("Skills.xlsx")
# 按Category分组,将同分类下的Item聚合为列表
grouped_data = df.groupby('Category')['Item'].apply(list)
# 转换为嵌套字典并添加外层Skills键
result = {'Skills': grouped_data.to_dict()}

print(result)

代码说明

  • 读取文件时不设置index_col=0,防止重复的Category值被覆盖;
  • groupby('Category')['Item'].apply(list)实现将同一分类下的所有Item合并为列表;
  • 最后通过to_dict()转换为字典,再在外层包裹'Skills'键,得到目标格式。

运行结果

{'Skills': {'old': ['apple', 'grape'], 'new': ['mango', 'ginger']}}

实现基础目标的代码

如果不需要外层'Skills'键,直接取分组后的字典即可:

import pandas as pd

df = pd.read_excel("Skills.xlsx")
grouped_data = df.groupby('Category')['Item'].apply(list)
result = grouped_data.to_dict()

print(result)

运行结果

{'old': ['apple', 'grape'], 'new': ['mango', 'ginger']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:40:27