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

如何将pandas DataFrame行转为numpy数组逐行处理并解决NameError报错

问题原因
  • 直接使用for row in data遍历pandas DataFrame时,默认迭代返回的是列名,而非每行的数据内容
  • 代码中直接书写header_0属于未定义的独立变量,Python不会自动将其关联到DataFrame的表头字段,需要主动从行数据中读取对应列的取值
修复方案

方案1:逐行遍历(适配原有逻辑)

使用iterrows()方法遍历每一行,通过行对象的列名索引获取对应字段值:

import pandas as pd
import numpy as np

def function():
    # 加载数据
    data = pd.read_csv('data.csv')
    # 遍历每一行,iterrows返回(行索引, 行数据Series)
    for idx, row in data.iterrows():
        # 从当前行读取对应列的值构造矩阵
        variable_matrix = np.array([[row['header_0'], row['header_1']], [row['header_2'], row['header_3']]])
        weight_matrix = np.array([[0.01, 0.01], [0.01, 0.01]])
        output = np.matmul(variable_matrix, weight_matrix)
        print(output)

注意事项

  • iterrows()返回的行数据是原DataFrame的视图,修改行数据不会同步到原DataFrame
  • 数据量超过1万行时,iterrows()性能较差,推荐使用向量化方案

方案2:向量化运算(更高性能,无需循环)

直接提取整列数据批量做矩阵运算,效率是逐行遍历的百倍以上:

import pandas as pd
import numpy as np

def function():
    data = pd.read_csv('data.csv')
    weight_matrix = np.array([[0.01, 0.01], [0.01, 0.01]])
    # 批量提取所有行的对应列构造三维矩阵,维度为(行数, 2, 2)
    variable_matrices = data[['header_0', 'header_1', 'header_2', 'header_3']].values.reshape(-1, 2, 2)
    # 批量做矩阵乘法,输出维度为(行数, 2, 2)
    outputs = np.matmul(variable_matrices, weight_matrix)
    # 逐行打印结果,和原逻辑输出一致
    for output in outputs:
        print(output)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:06:03