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

Python Pandas如何将嵌套列表转换为DataFrame

问题说明

现有如下结构的嵌套列表,需要将其转换为Pandas DataFrame,直接使用pd.DataFrame(原始数据)的方式无法得到正确结果:

raw_data = [
    [{'aaa': '42'}, {'bbb': '60'}, {'ccc': '25'}, {'ddd': '14'}, {'eee': '15'}, {'eee': '84'}],
    [{'aaa': '4'}, {'bbb': '0'}, {'ccc': '25'}, {'ddd': '1'}, {'eee': '1'}, {'eee': '8'}]
]

转换失败的核心原因是:原始数据的每一行是多个独立的单键值字典,且存在重复键eee,Pandas直接读取时会把每个字典识别为单独的列,无法自动合并成行记录。


可行实现方案

方法1:保留重复列名(和期望输出完全匹配)

按数据原有顺序提取列名和每行的值,直接构造DataFrame即可:

import pandas as pd

# 原始数据
raw_data = [
    [{'aaa': '42'}, {'bbb': '60'}, {'ccc': '25'}, {'ddd': '14'}, {'eee': '15'}, {'eee': '84'}],
    [{'aaa': '4'}, {'bbb': '0'}, {'ccc': '25'}, {'ddd': '1'}, {'eee': '1'}, {'eee': '8'}]
]

# 从第一行数据提取列名,保持原有顺序
col_names = [list(single_dict.keys())[0] for single_dict in raw_data[0]]
# 逐行提取所有值
row_values = [
    [list(single_dict.values())[0] for single_dict in row]
    for row in raw_data
]

# 生成DataFrame
df = pd.DataFrame(row_values, columns=col_names)
print(df)

运行输出结果:

aaa bbb ccc ddd eee eee
0  42  60  25  14  15  84
1   4   0  25   1   1   8

方法2:重复键自动加后缀(避免列名重复,更方便后续计算)

如果不需要保留重复列名,可以在预处理时给重复出现的键加序号后缀,避免后续取数出错:

import pandas as pd
from collections import defaultdict

raw_data = [
    [{'aaa': '42'}, {'bbb': '60'}, {'ccc': '25'}, {'ddd': '14'}, {'eee': '15'}, {'eee': '84'}],
    [{'aaa': '4'}, {'bbb': '0'}, {'ccc': '25'}, {'ddd': '1'}, {'eee': '1'}, {'eee': '8'}]
]

processed_rows = []
for row in raw_data:
    key_counter = defaultdict(int)
    current_row = {}
    for single_dict in row:
        for k, v in single_dict.items():
            if key_counter[k] == 0:
                col_name = k
            else:
                col_name = f"{k}_{key_counter[k]}"
            current_row[col_name] = v
            key_counter[k] += 1
    processed_rows.append(current_row)

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

运行输出结果:

aaa bbb ccc ddd eee eee_1
0  42  60  25  14  15    84
1   4   0  25   1   1     8

注意事项

  • 方法1生成的DataFrame和期望输出结构完全一致,但存在重复列名,后续通过列名取值时会同时返回两列数据,新手操作容易出错
  • 方法2为重复的键自动追加了序号后缀,所有列名唯一,更适合后续做数据筛选、统计计算,可根据实际业务需求选择

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:36:26