我的pandas数据框df
有5列,'A', 'B', 'C', 'D', 'E'
我想将一个函数应用于前4列('A', 'B', 'C', 'D'
),它为行X[i]
提取两个输入E[i]
和i
,其中X
是前四个专栏之一。
忽略E[i]
,这非常简单:
def do_something(value):
return some_transformation(value)
df[['A', 'B', 'C', 'D']].applymap(do_something)
同样,如果我有一个常数值,我可以使用map
:
def do_something(value, i):
return some_transformation(value, i)
df[['A', 'B', 'C', 'D']].map(lambda f: do_something(f, 6))
但是,如果不是6
我想在同一行传递E
的值,我该怎么做呢?
答案 0 :(得分:1)
使用np.vectorize
,您可以将列传递给函数,同时在每组元素上进行实际计算。
def do_something(x, y):
return some_transformation(x, y)
v = np.vectorize(do_something)
df[['A', 'B', 'C', 'D']].apply(v, args=(df['E'], ))