如何将含字典的嵌套列表转换为指定列的Pandas DataFrame?
解决嵌套列表转指定列名DataFrame的方法
先明确示例输入结构(和你的test格式一致):
test = [ [{"label": "positive", "score": 0.8}, {"label": "negative", "score": 0.1}, {"label": "neutral", "score": 0.1}], [{"label": "positive", "score": 0.3}, {"label": "negative", "score": 0.6}, {"label": "neutral", "score": 0.1}] ]
你之前的方法无法实现需求,是因为stack()会打乱层级结构,没把label映射成列名。可以通过以下两种方式解决:
方法一:列表推导式转换字典结构
先将每个子列表中的三个字典,合并为一个以label为键、score为值的字典,再直接传入pd.DataFrame:
import pandas as pd processed_data = [{d['label']: d['score'] for d in sublist} for sublist in test] df = pd.DataFrame(processed_data)
运行后得到的DataFrame结构:
| positive | negative | neutral |
|---|---|---|
| 0.8 | 0.1 | 0.1 |
| 0.3 | 0.6 | 0.1 |
方法二:通过Series批量转换
如果子列表中字典的顺序不固定,或担心存在缺失的label,可以用pd.Series逐个转换子列表,再合并为DataFrame:
import pandas as pd df = pd.DataFrame([pd.Series({d['label']: d['score'] for d in sublist}) for sublist in test])
这种方式会自动处理缺失的label,缺失值会填充为NaN。
内容的提问来源于stack exchange,提问作者Nick15
相关产品推荐
相关产品推荐

