这可能不是最好的标题,但是我想知道的是:
def foo(df, column, func):
return df[column].map(func)
foo(df, 'my_column', lambda d: int(d)) # for example
无论如何,func
是否可以访问column
范围内的foo
变量?
(是的,我知道有解决方法,我只想知道这是否有可能)
答案 0 :(得分:1)
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