【问题标题】:How do you load rows from a pandas data frame to numpy arrays?如何将 pandas 数据框中的行加载到 numpy 数组?
【发布时间】: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 dataheader_0 没有在任何地方定义,您使用的任何其他“标题”变量也没有定义。我建议从 How to iterate over rows in a DataFrame in Pandas 开始了解如何访问行值,尤其是有关如何避免迭代的答案。
  • 谢谢@HenryEcker 我衷心感谢您的周到回复。我将查看您发布的 Question 的答案以及您提供的 for 循环逻辑。对我来说,迭代列而不是行是有道理的,但是我可能需要转置我的数据集进行处理。无论哪种方式,正如您所提到的,此代码存在很多问题。当我在这方面取得一些有意义的进展时,我会报告回来。非常感谢 - Brian Haney

标签: python arrays pandas numpy


【解决方案1】:

要遍历行,您需要使用.iterrows() 方法:

data = pd.read_csv('data.csv')
    #Forward
for index, row in data.iterrows():
    ...

如果要将数据框加载为 numpy 数组,则需要使用.values 属性:

data = pd.read_csv('data.csv')
    #Forward
for row in data.values:
    ...

Henry Ecker 建议的页面详细解答了您的问题:

How to iterate over rows in a DataFrame in Pandas

【讨论】:

  • 感谢您的反馈,非常感谢您的宝贵时间。
  • 您发布的问题link 与我提出的问题之间的区别在于需要从“.csv”文件中加载数据。我深入审查了答案,尝试了您建议的两个脚本,但我仍然遇到错误。例如,AttributeError: 'numpy.ndarray' 对象没有属性 'iterrows'。我将继续努力,并在找到答案时发布答案。谢谢!
  • 你可以为你的函数获取并输入pandas.DataFrame,或者CSV的路径。在您的情况下,重要的是您需要将 .iterrows().apply() 用于 pandas 数据帧。如果您的数据类型是 numpy 数组,那么 for 循环将完成这项工作,尽管它可能不是最有效的。如果您不确定变量data 的数据类型是什么,您可以简单地通过print(type(data)) 进行检查。它将打印您的数据类型并查看它是 pandas 数据框还是 numpy。
猜你喜欢
  • 2019-11-07
  • 1970-01-01
  • 2020-08-18
  • 2013-09-09
  • 2016-09-19
  • 2017-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多