我需要对数据框行应用多个函数。这些函数的参数取自单行中两个或多个字段的值。例如:
d = {
'a': [1,1,1,1],
'b': [2,2,2,2],
'c': [3,3,3,3],
'd': [4,4,4,4]
}
df1 = pd.DataFrame(d)
def f1(x,y):
return x + 2*y
def f2(x,y):
return y + 2*x
df2 = pd.DataFrame()
df2['val1'] = df1.apply(lambda r: f1(r.a, r.b),1)
df2['val2'] = df1.apply(lambda r: f2(r.c, r.d),1)
在依次应用每个函数时,Pandas会对所有数据框行进行单独的迭代。在这个例子中,Pandas会对数据框进行两次迭代。因此,我得到了以下结果:
In [10]: df2
Out[10]:
val1 val2
0 5 10
1 5 10
2 5 10
3 5 10
有没有办法在一次数据框遍历中应用两个或更多类似这样的函数?通过这种方式,应用程序应该返回一行中多个字段的值。此外,这种情况包括应用单个函数返回多个字段的值。如何做到这一点?
df3['val1'], df3['val2'] = f1(df1.a, df1.b), f2(df1.c, df1.d)
。 - Roman Pekar