pandas将函数映射到所有列和一个固定列

时间:2017-10-17 22:53:04

标签: python pandas

我的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的值,我该怎么做呢?

1 个答案:

答案 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'], ))