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

如何为列表中的每个numpy.ndarray分别创建独立DataFrame

实现思路

强烈不推荐用动态生成独立变量名的方式管理多个DataFrame,后续检索、遍历、批量处理的成本极高,你提到的字典存储方案是当前场景的最优解,从根源上避免循环覆盖变量的问题。


前置修正

你给出的输入列表示例不符合Python语法,数组元素之间需要用逗号分隔,同时注意不要用list作为变量名,会覆盖Python内置的列表类型,导致后续调用内置方法报错。正确的输入写法:

import pandas as pd

arr_list = [
    [1, 2, 3, 4],
    [12, 19, 30, 60, 95, 102]
]

批量生成DataFrame

遍历存储数组的列表,按照你需要的命名规则生成字典键,对应的值就是转换完成的单列DataFrame:

df_container = {}
# start=1 对应命名里的序号从1开始计数
for arr_index, arr_content in enumerate(arr_list, start=1):
    df_name = f"Array{arr_index}_df"
    # 生成单列DataFrame,列名和DataFrame命名保持一致
    df_container[df_name] = pd.DataFrame(arr_content, columns=[df_name])
    # 如果需要索引从1开始(和你给出的示例效果匹配),加上下面这行
    df_container[df_name].index += 1

调用指定DataFrame

需要使用对应数组的DataFrame时,直接通过键名从字典中取出即可,例如取第二个数组生成的DataFrame:

array2_df = df_container["Array2_df"]
print(array2_df.head(4))

输出效果和你的预期完全一致:

Array2_df
1         12
2         19
3         30
4         60

注:如果你一定要生成独立命名的全局变量(极度不推荐,仅做原理说明),可以通过globals()实现,但这种方式会让变量管理变得混乱,极易出现命名冲突:

for arr_index, arr_content in enumerate(arr_list, start=1):
    df_name = f"Array{arr_index}_df"
    globals()[df_name] = pd.DataFrame(arr_content, columns=[df_name])
    globals()[df_name].index += 1
# 执行完成后可以直接通过Array1_df、Array2_df访问对应DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:42:23