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

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')


翻翻过去那场雪
浏览 171回答 2
2回答

守候你守候我

你为什么要使用类来做到这一点?如果您的数据在熊猫数据框中,您可以简单地执行以下操作:df['concat'] = df['title'] + df['imdb'] + df['critic'] + df['quote']

烙印99

一般来说,直接分配计算序列是清晰有效的。如果您希望使用显式函数进行系列计算,那么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_20   0   1   2      3      31   3   4   5     12     122   6   7   8     21     213   9  10  11     30     304  12  13  14     39     39通常不需要将单个列传递给您的函数。什么是不推荐的是通过一个Python级逐行循环apply:df['sum_3'] = df.apply(lambda x: x[0] + x[1] + x[2], axis=1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python