У меня есть pandas фрейм данных с несколькими столбцами, например
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 7)), columns=list('ABCDEFG'))
, и я хочу apply
функцию, которая может принимать в качестве аргументов все столбцы фрейма данных:
# function would do something more complex potentially :)
def foo(a,b,c,d,e,f,g):
# do stuff with a,b,c,d,e,f,g. Here I do something silly/simple
return a + b*2 + c*3 + d*4 + e*5 + f*5 + g*5
Теперь я хотел бы применить foo
ко всем строкам df
. Какой правильный синтаксис для этого?
Мои попытки работают
df.apply(lambda row: foo(row[0], row[1], row[2], row[3], row[4], row[5], row[6]), axis = 1) # terrible
df.apply(lambda row: foo(*row), axis = 1) # better
, но есть ли способ сделать это еще более кратко, например, без lambda
?