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

如何在Python的for循环中从np.array创建DataFrame

解决方法

你的代码核心问题是没有将循环生成的每一行数据case_i收集到all_cases中,且初始空numpy数组直接append会导致维度混乱,以下是几种可行的修改方案:

方案1:用列表收集数据(推荐,效率更高)

用Python列表存储每一行,最后转成DataFrame,代码简洁高效:

import numpy as np
import pandas as pd

all_cases = []  # 用列表替代空numpy数组
for i in range(1, 4):
    subSoil_array = [i, 2*i, 3*i]
    case_i = subSoil_array + [100*i]  # 列表拼接替代np.append
    all_cases.append(case_i)  # 将当前行加入列表

# 转换为3行4列的DataFrame
df = pd.DataFrame(all_cases)
print(df)

输出结果:

0  1  2    3
0  1  2  3  100
1  2  4  6  200
2  3  6  9  300

方案2:用numpy数组堆叠(保留numpy操作)

若坚持用numpy数组处理,需将每个case_i转为二维数组后垂直堆叠,避免维度扁平化:

import numpy as np
import pandas as pd

all_cases = np.empty((0, 4))  # 初始化0行4列的空二维数组
for i in range(1, 4):
    subSoil_array = [i, 2*i, 3*i]
    case_i = np.append(subSoil_array, 100*i).reshape(1, 4)  # 转为1行4列的二维数组
    all_cases = np.vstack((all_cases, case_i))  # 垂直堆叠到总数组

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

额外:不用循环的简洁写法(可选)

若无需强制使用for循环,用numpy广播机制可一行生成所需数组:

import numpy as np
import pandas as pd

i_arr = np.arange(1, 4)
all_cases = np.column_stack([i_arr, 2*i_arr, 3*i_arr, 100*i_arr])
df = pd.DataFrame(all_cases)
print(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:55:07