如何将指定嵌套列表/数组转换为目标结构的Pandas DataFrame
实现嵌套列表到目标DataFrame的转换
这里有个清晰的实现方案,完全匹配你的需求:
我们需要把每个聚类组里的整数和对应浮点数一一配对,同时给每个组分配唯一的ClstId,具体步骤如下:
步骤1:导入依赖库
因为你的数据里包含numpy数组,所以需要导入numpy和pandas:
import pandas as pd import numpy as np
步骤2:定义原始数据
把你提供的嵌套列表赋值给变量:
raw_data = [((1538, 6323), (0.9995334, 0.9995334)), ((7694, 7862, 8399, 9158), np.array([0.99999015, 0.99997352, 0.99997993, 0.99996219]))]
步骤3:构建行数据列表
遍历每个聚类组,生成符合要求的行记录:
rows = [] # 遍历每个聚类,从1开始分配ClstId for clst_id, (int_vals, float_vals) in enumerate(raw_data, start=1): # 如果是numpy数组,先转成普通列表 if isinstance(float_vals, np.ndarray): float_vals = float_vals.tolist() # 把整数和浮点数一一配对,添加到行列表 for col_int, col_float in zip(int_vals, float_vals): rows.append({ 'ClstId': clst_id, 'ColInt': col_int, 'ColFloat': col_float })
步骤4:转换为DataFrame
最后把行列表转换成Pandas DataFrame:
df = pd.DataFrame(rows) print(df)
输出结果
运行后你会得到完全符合要求的DataFrame:
ClstId ColInt ColFloat 0 1 1538 0.999533 1 1 6323 0.999533 2 2 7694 0.999990 3 2 7862 0.999974 4 2 8399 0.999980 5 2 9158 0.999962
关键点说明
- 使用
enumerate(raw_data, start=1)可以方便地从1开始生成聚类ID,不用手动维护计数器 - 加入了对numpy数组的判断和转换,确保兼容原始数据中的数组类型
zip(int_vals, float_vals)完美实现整数和对应浮点数的配对,保证每行数据的对应关系正确
内容的提问来源于stack exchange,提问作者mvh
相关产品推荐
相关产品推荐

