Python 将类方法应用于数据框的行

标签 python pandas vectorization

我的类使用数据帧的一行来构造一个对象,我想通过将 init 应用于数据帧的每一行来创建一个对象数组。有没有办法对其进行矢量化?我的类定义如下:

class A(object):
    def __init__(self,row):
        self.a = row['a']
        self.b = row['b']

任何建议都将受到高度赞赏!

我有一种我不太满意的方法来解决这个问题。在类之外定义另一个函数,然后使用 apply。

def InitA(row):
    return A(row)

假设 df 是我想用作参数的数据框。

xxx = df.apply(InitA,axis=1)

给了我想要的。不过,我认为 InitA 不是必需的。

我原来的问题有点复杂。类定义为

class A(object):
    def __init__(self):
        return
    def add_parameter(self,row):
        self.a = row['a']

我打算将 add_parameter 应用于数据帧的每一行。但我认为定义另一个(lambda)函数对于解决这个问题是必要的。

最佳答案

只使用 lambda 函数?

xxx = df.apply(lambda x: A(x),axis=1)

编辑: 另一种解决方案是直接传递类,然后 apply-function 调用构造函数:

xxx = df.apply(A,axis=1)

这有效:

import pandas as pd 

class C(object):
    def __init__(self,dat):
        return

A = pd.DataFrame({'a':pd.Series([1,2,3])})
A.apply(lambda x: C(x),axis=1)

关于Python 将类方法应用于数据框的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630340/

相关文章:

python - Pandas - 通过映射重命名每个级别的分类值时出现 'returning-a-view-versus-a-copy' 错误

matlab - 在匿名函数内联中将 NaN 设置为零

r - 当元素依赖于数据框中的其他元素时如何向量化此 R 函数

python - Google Adwords API 身份验证问题

python - 在 Python 中从链表中删除头节点

python - Google Colab 上的 pandas 的 ANSI 编码?

python - 返回所有相等的列

python - ansible-container 不是 JSON 可序列化的

python - Pandas 情节,结合两个情节

python - 在 NumPy 中计算距离矩阵的有效方法