【发布时间】:2021-09-08 01:18:36
【问题描述】:
问题是如何将行从 pandas 数据帧加载到 numpy 数组以进行逐行处理?虽然有很多关于类似问题的问题,但这个问题的独特之处在于它需要逐行处理,我通过 for 循环促进了这一点。 for 循环旨在将数据帧中的每一行作为一个 numpy 数组,并将其乘以另一个具有任意浮点值的 numpy 数组。最小值函数定义如下。
def function():
#Load Data
data = pd.read_csv('data.csv')
#Forward
for row in data:
variable_matrix = np.array([[header_0, header_1], [header_2, header_3]])
weight_matrix = np.array([[0.01, 0.01], [0.01, 0.01]])
output = np.matmul(variable_matrix, weight_matrix)
print(output)
返回的输出错误如下。
variable_matrix = np.array([[header_0, header_1], [header_2, header_3]])
NameError: name 'header_0' is not defined
直观地说,在此实例中,数组将采用与第一行中的header_0 关联的值。但是,机器无法识别这个值,尽管它是在 pandas 数据帧的标头中定义的,它已作为数据文件从data.csv 加载。
任何想法或建议将不胜感激。谢谢。
【问题讨论】:
-
这段代码有很多问题。直接迭代数据框时,您只会获得列名。
for row in data更准确地说是for column_name in data。header_0没有在任何地方定义,您使用的任何其他“标题”变量也没有定义。我建议从 How to iterate over rows in a DataFrame in Pandas 开始了解如何访问行值,尤其是有关如何避免迭代的答案。 -
谢谢@HenryEcker 我衷心感谢您的周到回复。我将查看您发布的 Question 的答案以及您提供的 for 循环逻辑。对我来说,迭代列而不是行是有道理的,但是我可能需要转置我的数据集进行处理。无论哪种方式,正如您所提到的,此代码存在很多问题。当我在这方面取得一些有意义的进展时,我会报告回来。非常感谢 - Brian Haney
标签: python arrays pandas numpy