您可以在.apply()中使用lambda函数,并通过x['A']等语法访问列值A值等。对于每个函数参数,只需输入对应的@987654325 @, x['B'] 在函数调用的正确位置,例如cpt_p(x['A'], x['B']) 将A 列的值作为第一个参数,将B 列的值作为第二个参数(对于每一行):
def cpt_p(A, B):
p = [A] * int(B) # Creates a repeating value of A of length B i.e. [A, A, A, ...]
return p
df['C'] = df.apply(lambda x: cpt_p(x['A'], x['B']), axis=1)
另一种方法:
将函数应用于行的另一种方法是list(map()),如下所示:
df['C'] = list(map(cpt_p, df['A'], df['B']))
您可以将函数作为第一个参数传递给map() 函数,然后将函数参数作为第二个参数传递给map()。
使用list(map()) 的优势在于它通常比在axis=1 上使用apply() 更快。 执行时间可能快 3 倍以上。您可以查看 this post 了解某些用例的执行时间比较。
结果:
print(df)
A B C
0 120.0 109 [120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, 120.0, ...]
1 108.6 147 [108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, 108.6, ...]