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.xdf['concat'] = df.apply(Movie,axis=1)我希望看到的结果是将每一列串联为数据框中的新列。问题是 Movie 没有收到预期数量的参数,我没有调用 mashup 方法,但不确定出了什么问题。TypeError: ("__init__() missing 3 required positional arguments: 'imdb', 'critic', and 'quote'", 'occurred at index 0')
2 回答

守候你守候我
TA贡献1802条经验 获得超10个赞
你为什么要使用类来做到这一点?如果您的数据在熊猫数据框中,您可以简单地执行以下操作:
df['concat'] = df['title'] + df['imdb'] + df['critic'] + df['quote']

烙印99
TA贡献1829条经验 获得超13个赞
一般来说,直接分配计算序列是清晰有效的。如果您希望使用显式函数进行系列计算,那么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
通常不需要将单个列传递给您的函数。什么是不推荐的是通过一个Python级逐行循环apply:
df['sum_3'] = df.apply(lambda x: x[0] + x[1] + x[2], axis=1)
添加回答
举报
0/150
提交
取消