Pandas 将定义的函数应用于表中不同范围的行
我有一个像这样的df,有很多行:Pandas 将定义的函数应用于表中不同范围的行,pandas,Pandas,我有一个像这样的df,有很多行: BB AA FF 2 5 0 3 7 A 6 5 A 9 6 A 8 3 0 还有这样一个函数: def test(a,b): # a=array col AA # b=array col BB return (a*b)+a 我希望FF列中
BB AA FF
2 5 0
3 7 A
6 5 A
9 6 A
8 3 0
还有这样一个函数:
def test(a,b):
# a=array col AA
# b=array col BB
return (a*b)+a
我希望FF列中的行的值为!=0对涉及列BB和AA的df切片数组应用函数测试,以在新列ZZ中生成以下输出:
BB AA FF ZZ
2 5 0 0
3 7 A 28
6 5 A 35
9 6 A 51
8 3 0 0
我的想法是:
df['zz']= df.apply(lambda x: test(df.AA,df.BB) for the range of values among zero)
但我的问题是,我不确定如何在FF列中指定de数组来应用您可以使用+的列:
或者您可以使用lambda函数:
请核对我的答案
def test(x):
return (x[0]*x[1])+x[0]
df['ZZ']=df[['AA','BB']].apply(test,axis=1).mask(df['FF'].eq('0'),0)
print(df)
BB AA FF ZZ
0 2 5 0 0
1 3 7 A 28
2 6 5 A 35
3 9 6 A 60
4 8 3 0 0
df['ZZ']=df.apply(lambda x: x[['BB','AA']].prod()+ x['AA'] if x['FF'] != '0' else x['FF'],axis=1)
print(df)
BB AA FF ZZ
0 2 5 0 0
1 3 7 A 28
2 6 5 A 35
3 9 6 A 60
4 8 3 0 0