Pandas 如何将lambda函数应用于满足条件的行
我正在尝试将函数按行应用于pandas数据帧,如下所示Pandas 如何将lambda函数应用于满足条件的行,pandas,lambda,Pandas,Lambda,我正在尝试将函数按行应用于pandas数据帧,如下所示 df.loc[df.var1==123,'coltoChange']=df.apply(lambda row: myfunc(row.var1, row.var2),axis=1) 其思想是仅将该函数应用于var1的值为123的行。但是,当我运行此语句时,它仍然会尝试运行数据帧中的每一行。我相信您需要在两侧进行筛选: mask = df.var1==123 df.loc[mask, 'coltoChange']=df[mask].appl
df.loc[df.var1==123,'coltoChange']=df.apply(lambda row: myfunc(row.var1, row.var2),axis=1)
其思想是仅将该函数应用于
var1
的值为123
的行。但是,当我运行此语句时,它仍然会尝试运行数据帧中的每一行。我相信您需要在两侧进行筛选:
mask = df.var1==123
df.loc[mask, 'coltoChange']=df[mask].apply(lambda row: myfunc(row.var1, row.var2),axis=1)
样本:
df = pd.DataFrame({'var1':[123,123,3],
'var2':[3,4,5],
'var3':[1,2,3],
'coltoChange':[2,4,5]})
def myfunc(x,y):
#sample function
return x + y
mask = df.var1==123
df.loc[mask, 'coltoChange']=df[mask].apply(lambda row: myfunc(row.var1, row.var2),axis=1)
print (df)
coltoChange var1 var2 var3
0 126 123 3 1
1 127 123 4 2
2 5 3 5 3
myfunc
在做什么?我问这个问题是因为apply可能是这里使用的错误函数。我必须简化它。我的数据框有数百万行的日期范围。因此,我根据行值及其日期运行randomforestregressor predict。运行需要很长时间,但我不知道如何“矢量化”它