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

如何将字典列表转换为指定格式的Pandas DataFrame?

字典列表转DataFrame仅第一行有数据的解决方法

现有如下字典列表:

listofdict = [{'value1': [1, 2, 3, 4, 5]}, {'value2': [5, 4, 3, 2, 1]}, {'value3': ['a', 'b', 'c', 'd', 'e']}]

需要将其转换为以value1、value2、value3为列名,对应列表为列数据的DataFrame,但直接使用df = pd.DataFrame(listofdict)转换后,结果仅第一行有数据,其余行均为NaN,以下是可行的解决办法:

方法一:合并字典为单字典后转换

原列表中每个字典仅包含一个键值对,先将所有字典合并为一个完整的字典,再传入pd.DataFrame:

import pandas as pd

listofdict = [{'value1': [1, 2, 3, 4, 5]}, {'value2': [5, 4, 3, 2, 1]}, {'value3': ['a', 'b', 'c', 'd', 'e']}]
# 合并所有字典为单个字典
merged_dict = {}
for item in listofdict:
    merged_dict.update(item)
# 转换为DataFrame
df = pd.DataFrame(merged_dict)
print(df)

方法二:用pd.concat逐个转换后合并

将列表中的每个字典单独转为DataFrame,再按列方向合并:

import pandas as pd

listofdict = [{'value1': [1, 2, 3, 4, 5]}, {'value2': [5, 4, 3, 2, 1]}, {'value3': ['a', 'b', 'c', 'd', 'e']}]
# 逐个转换并按列合并
df = pd.concat([pd.DataFrame(d) for d in listofdict], axis=1)
print(df)

原方法失效原因

pd.DataFrame(listofdict)会将列表中的每个字典视为一行数据,字典中的列表会被当作单个单元格的值,因此只有第一行能匹配到对应列的内容,后续行因无对应键值,自然显示为NaN。而我们需要的是将每个列表作为一列的完整数据,所以必须先调整数据结构,让DataFrame能识别出各列对应的完整数据集。

内容的提问来源于stack exchange,提问作者Steven Mugisha Mizero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:50:29