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

如何遍历含嵌套数组的Pandas DataFrame列并展开数据

解决嵌套数据转扁平DataFrame的问题

嘿,我来帮你搞定这个数据整理的问题!你现在需要把这种嵌套结构的列表数据,展开成你想要的扁平DataFrame格式,其实不用纠结iterrows、iteritems这些方法,直接在转DataFrame前把数据处理成扁平列表会更简单高效。

第一步:先展开嵌套数据

你的原始数据是嵌套的列表结构,我们可以用一个简单的循环(或者更简洁的列表推导式)把它拆成扁平的条目:

# 你的原始数据
data = [['file0090', ([[ 84, 55, 189], [248, 100, 18], [ 68, 115, 88]])], ['file6565', ([[ 86, 58, 189], [24, 10, 118], [ 68, 11, 8]]) ]]

# 用列表推导式快速展开数据
flattened_data = [[filename] + sub_list for filename, nested_arrays in data for sub_list in nested_arrays]

如果觉得列表推导式有点绕,也可以用更直观的循环写法:

flattened_data = []
for filename, nested_arrays in data:
    # 遍历每个嵌套的子数组,把文件名和子数组元素拼在一起
    for sub_list in nested_arrays:
        flattened_data.append([filename] + sub_list)

第二步:转成目标DataFrame

现在flattened_data已经是我们想要的扁平结构了,直接用pandas转成DataFrame就行:

import pandas as pd

df = pd.DataFrame(flattened_data, columns=['col0', 'col1', 'col2', 'col3'])
print(df)

运行后你会得到完全符合需求的结果:

col0  col1  col2  col3
0  file0090    84    55   189
1  file0090   248   100    18
2  file0090    68   115    88
3  file6565    86    58   189
4  file6565    24    10   118
5  file6565    68    11     8

为什么之前的方法没成功?

你之前尝试用iterrows等方法,可能是先把原始数据转成了DataFrame,这时第二列是嵌套的数组对象,遍历的时候需要额外拆分,但其实我们完全可以在转DataFrame前就把数据处理好,这样更高效也更不容易出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:33:13