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

如何将Pandas数据框中的重复项转换为指定格式的嵌套字典?

把带重复词汇的DataFrame转换成指定嵌套字典的方法

嘿,这个需求用Pandas就能轻松搞定,我给你两种实用的实现方式,你可以按需选择:

方法一:用groupby快速实现(推荐)

这种方法利用Pandas的分组功能,一行核心代码就能完成转换,简洁高效:

import pandas as pd

# 先模拟你的DataFrame(实际使用时替换成你的真实数据)
df = pd.DataFrame({
    'category': ['happy', 'unhappy', 'angry', 'confident', 'friendly', 'happy'],
    'word': ['tolerance', 'tolerance', 'kill', 'tolerance', 'tolerance', 'kill'],
    'score': [0.91, 0.12, 1.0, 0.56, 0.70, 0.01]
})

# 核心转换逻辑
target_dict = df.groupby('word').apply(lambda group: group.set_index('category')['score'].to_dict()).to_dict()

print(target_dict)

逻辑解释:

  1. groupby('word'):把DataFrame按word列分组,相同词汇的行被归到一组
  2. 对每个分组,用lambda函数把category设为索引,再将score列转换成{category: score}的小字典
  3. 最后外层再转成字典,就得到了{word: {category: score}}的嵌套结构

方法二:逐行遍历(适合新手理解底层逻辑)

如果你想更清晰地控制每一步的转换过程,可以用循环逐行处理:

import pandas as pd

df = pd.DataFrame({
    'category': ['happy', 'unhappy', 'angry', 'confident', 'friendly', 'happy'],
    'word': ['tolerance', 'tolerance', 'kill', 'tolerance', 'tolerance', 'kill'],
    'score': [0.91, 0.12, 1.0, 0.56, 0.70, 0.01]
})

target_dict = {}
# 遍历DataFrame的每一行
for _, row in df.iterrows():
    word = row['word']
    category = row['category']
    score = row['score']
    
    # 如果当前词汇还没在目标字典里,先初始化一个空字典
    if word not in target_dict:
        target_dict[word] = {}
    # 将类别和分数对应存入嵌套字典
    target_dict[word][category] = score

print(target_dict)

额外说明:处理重复的word+category组合

如果你的DataFrame里存在同一个词汇在同一个类别下出现多次的情况(比如happy类别下的tolerance有两个不同的score),上面两种方法会默认保留最后一行的score值。如果需要聚合这些重复项(比如取平均值、求和),可以先做聚合再转换:

# 示例:对重复的word+category组合取平均score
target_dict = df.groupby(['word', 'category'])['score'].mean().unstack().to_dict('index')

这里先用groupby(['word', 'category'])做双重分组,用mean()计算平均分数,再用unstack()把类别转成列,最后转成目标字典结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:32:43