【发布时间】:2023-03-09 03:31:01
【问题描述】:
我需要对数据框行应用几个函数。这些函数的参数从单行的两个或多个字段中获取值。例如:
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
有什么方法可以在单次传递数据帧中应用两个或多个这样的函数?这样,应用程序应该连续返回一个以上字段的值。此外,这种情况包括应用单个函数返回多个字段的值。如何做到这一点?
【问题讨论】: