IIUC, functools.partial
- это то, что вы хотите:
from functools import partial
def func(col, x): return x if col==0 else x*2;
def foo(df, column, func):
return df[column].map(partial(func, column))
# toy df
df = pd.DataFrame(np.arange(8).reshape(4,2))
print(foo(df,1,func))
#0 2
#1 6
#2 10
#3 14
#Name: 1, dtype: int64
print(foo(df,0,func))
# equivalently:
# foo(df, 0, lambda col, x: x if col==0 else x*2)
#0 0
#1 2
#2 4
#3 6
#Name: 0, dtype: int64