Python 熊猫数据帧基于多列输入应用lambda

Python 熊猫数据帧基于多列输入应用lambda,python,pandas,dataframe,lambda,Python,Pandas,Dataframe,Lambda,假设我有一个数据帧,看起来像这样: 如何在数据帧上应用lambda使FullName=FirstName+''+LastName?据我所知,数据帧中的lambda只有一个输入?谢谢 我认为apply这里没有必要,只需将列与+连接在一起: df['FullName'] = df.FirstName + ' ' + df.LastName 或使用: 可以使用lambda进行解决,但速度较慢: df['FullName'] = df.apply(lambda x: x.FirstName + '

假设我有一个数据帧,看起来像这样:



如何在数据帧上应用lambda使FullName=FirstName+''+LastName?据我所知,数据帧中的lambda只有一个输入?谢谢

我认为
apply
这里没有必要,只需将列与
+
连接在一起:

df['FullName'] = df.FirstName + ' ' + df.LastName
或使用:

可以使用
lambda
进行解决,但速度较慢:

df['FullName'] = df.apply(lambda x: x.FirstName + ' ' + x.LastName, axis=1)

完美的成功了:-)不幸的是,我必须使用lambda,因为我遇到的问题更复杂(有if语句)。为了简单起见,我发布了这个示例。关于速度的后续问题…lambda在一般情况下慢还是在这种特定情况下慢(当应用于数据帧时)?@ShadyMBA-这取决于公式。但通常是使用
apply
这很慢,因为引擎盖下的循环。@ShadyMBA-然后使用@ShadyMBA-你能测试
df['GlobalName']=np.其中((df['GlobalName']=='')和(df['IsPerson']),df['CleanName'],'')
三种解决方案:
%timeit df['GlobalName'][df['GlobalName']=='=''=df.apply(lambda x:x['CleanName']['IsPerson']==True-else',axis=1)
%timeit-df['GlobalName'][df['GlobalName']==''']=np.其中(df['IsPerson']==True,df['CleanName'],'')
%timeit-df['GlobalName']=np.其中((df['IsPerson']=True)和(df['GlobalName']=='')、df['CleanName']、df['GlobalName']39.6 ms 40.6 ms 1.21 ms与其他两种解决方案相比,第三种解决方案速度超快。
df['FullName'] = df.apply(lambda x: x.FirstName + ' ' + x.LastName, axis=1)