Просто нужно убедиться, что вы возвращаете list
или np.array
того же размера, что и фрейм данных
df = pd.DataFrame({f"col{i}":[random.randint(0,10) for i in range(10)] for i in range(4)})
def dostuff(a):
return [f"*result of dostuff({x},{a[1][i]},{a[2][i]})*" for i,x in enumerate(a[0])]
df["scale_factor"] = dostuff(np.array(df[["col0","col1","col2"]]).T)
print(df.to_string(index=False))
output
col0 col1 col2 col3 scale_factor
2 0 3 2 *result of dostuff(2,0,3)*
9 6 10 2 *result of dostuff(9,6,10)*
0 7 8 4 *result of dostuff(0,7,8)*
10 2 9 6 *result of dostuff(10,2,9)*
8 3 4 2 *result of dostuff(8,3,4)*
2 2 2 5 *result of dostuff(2,2,2)*
1 8 1 5 *result of dostuff(1,8,1)*
0 1 6 6 *result of dostuff(0,1,6)*
2 0 10 6 *result of dostuff(2,0,10)*
9 10 8 2 *result of dostuff(9,10,8)*