使用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
相关产品推荐
相关产品推荐

