python - 如何使用 apply 将列作为参数传递给类

标签 python pandas

class Movie:

    def __init__(self, title, imdb, critic, quote):
        self.title = title
        self.imdb = imdb
        self.critic = critic
        self.quote = quote

    def mashup(self):    
        x =self.title + self.imdb + self.critic + self.quote
        return self.x

df['concat'] = df.apply(Movie,axis=1)

我期望看到的结果是将每列串联起来作为数据框中的新列。

问题是 Movie 没有收到预期数量的参数,并且我没有调用 mashup 方法,但不确定出了什么问题。

TypeError: ("__init__() missing 3 required positional arguments: 'imdb', 'critic', and 'quote'", 'occurred at index 0')

最佳答案

一般来说,直接分配计算序列是清晰且高效的。如果您希望使用显式函数进行系列计算,则 pipe您的数据框到您的函数:

df = pd.DataFrame(np.arange(15).reshape((5, 3)))

def summer(x):
    return x[0] + x[1] + x[2]

df['sum_1'] = df[0] + df[1] + df[2]
df['sum_2'] = df.pipe(summer)

print(df)

    0   1   2  sum_1  sum_2
0   0   1   2      3      3
1   3   4   5     12     12
2   6   7   8     21     21
3   9  10  11     30     30
4  12  13  14     39     39

通常不需要将单独的列传递给您的函数。 推荐使用 apply 的 Python 级逐行循环。 :

df['sum_3'] = df.apply(lambda x: x[0] + x[1] + x[2], axis=1)

关于python - 如何使用 apply 将列作为参数传递给类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53695509/

相关文章:

python - 无法在 Couchdb 上运行 Python View

python - 如何删除跳过测试的详细输出?

python - 从键列表中获取 Python 字典中的值

python - 如何解决 Python 3 包问题

python - 将numpy数组拆分为 block

python - 如果行具有相同的 "B column"值,则用最后已知值填充空 "A column"单元格

python - 绘制 pandas 数据框中的数据线,由一列中的键而不是不同的列标识

pandas - 如何使用标称值绘制 Pandas 的直方图?

python - 这是一个错误还是我不明白什么?

python - panda栏修改面临的问题