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

使用Pandas处理字典列表数据:标签与分数匹配错误求助

解决Pandas中字典列表数据标签与分数匹配错位问题

你的代码核心问题是固定使用第一行的labels作为所有行的分数列名,但第二行的标签顺序和第一行不一致,导致分数和对应标签错位。比如第二行的sad是第一个标签,对应分数0.123456,却被错误放到了relationship列下。

修正思路

每行数据都要基于自身的labels和scores构建一一对应的键值对,再合并到DataFrame中,确保标签和分数始终匹配。

修正后的代码

import pandas as pd

data = [{'sequence': 'he left me',
  'labels': ['relationship', 'sad', 'happy', 'depression', 'suicidal'],
  'scores': [0.9898561835289001,
   0.9809304475784302,
   0.3625302314758301,
   0.31606775522232056,
   0.04021124914288521]},
         {'sequence': 'I lost my job',
  'labels': ['sad', 'relationship', 'depression', 'happy', 'suicidal'],
  'scores': [0.123456,
   0.56789,
   0.78901,
   0.12345,
   0.67890]}]

# 遍历每个数据项,将labels和scores转为对应字典,再与sequence合并
processed_data = []
for item in data:
    label_score_map = dict(zip(item['labels'], item['scores']))
    processed_item = {'sequence': item['sequence'], **label_score_map}
    processed_data.append(processed_item)

df = pd.DataFrame(processed_data)
print(df)

输出结果

sequence  relationship      sad    happy  depression  suicidal
0     he left me      0.989856  0.98093  0.36253    0.316068  0.040211
1  I lost my job      0.567890  0.123456  0.12345    0.789010  0.678900

简化写法(列表推导式)

如果想让代码更简洁,也可以用一行列表推导式完成数据预处理:

processed_data = [{'sequence': item['sequence'], **dict(zip(item['labels'], item['scores']))} for item in data]
df = pd.DataFrame(processed_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:35:15