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

如何将for循环生成的numpy数组动态存入pandas DataFrame的对应列

错误原因

  • 逻辑嵌套错误:你将DataFrame初始化、全列赋值的逻辑放在了遍历每日数组的循环内部。每遍历到一天的数据,就会新建空DataFrame,再把当天的数组赋值给全部10列,最后一次循环执行的是第10天的逻辑,因此所有列最终都被覆盖为第10天的数值。
  • 冗余的展平逻辑:numpy数组展平不需要嵌套for循环逐个取值append,直接调用.flatten()方法即可实现,执行效率远高于手动循环。
  • 字典Key不匹配:你的存储字典里的键是day_1、day_2…day_10,但代码取值时拼接的是day_'+str(days)+'_rf',会直接触发KeyError。

修正后代码

import numpy as np
import pandas as pd

day = 10
# 先初始化空DataFrame,不要放在循环内部
df_xyz = pd.DataFrame()

for days in np.arange(1, day+1):
    # 匹配字典的key,去掉多余的_rf后缀
    numpy_array_to_iterate = df_dictionary['arrays_to_iterate'][f'day_{days}']
    # 直接展平数组
    flatten_arr = numpy_array_to_iterate.flatten()
    # 只给当前天对应的列赋值,不要循环给所有列赋值
    col_name = f'variable_day_{days}'
    df_xyz[col_name] = flatten_arr

df_xyz

代码说明

  1. 把DataFrame初始化放在循环外部,避免每次遍历都清空之前已经赋值的列
  2. 每次遍历只给当前日期对应的列赋值,不会覆盖其他列的内容
  3. 用numpy自带的flatten方法替代双层循环,代码更简洁、执行速度更快
  4. 修正了字典key的拼写,和你存储的结构匹配

内容的提问来源于stack exchange,提问作者Abhilash Singh Chauhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 18:45:04