【发布时间】:2019-12-05 06:26:22
【问题描述】:
假设我有一个如下所示的数据框:
如何在数据框上应用 lambda 以使 FullName = FirstName + ' ' + LastName?据我所知,数据帧中的 lambda 只有 1 个输入?谢谢!
【问题讨论】:
标签: python pandas dataframe lambda
假设我有一个如下所示的数据框:
如何在数据框上应用 lambda 以使 FullName = FirstName + ' ' + LastName?据我所知,数据帧中的 lambda 只有 1 个输入?谢谢!
【问题讨论】:
标签: python pandas dataframe lambda
我觉得apply这里没必要,只和+一起加入列:
df['FullName'] = df.FirstName + ' ' + df.LastName
或者使用Series.str.cat:
df['FullName'] = df.FirstName.str.cat(df.LastName, sep=' ')
lambda 的解决方案是可能的,但速度很慢:
df['FullName'] = df.apply(lambda x: x.FirstName + ' ' + x.LastName, axis=1)
【讨论】:
apply 它很慢,因为在引擎盖下循环。
df['GlobalName'] = np.where((df['GlobalName']=='') & (df['IsPerson']), df['CleanName'], '') 吗?
%timeit df['GlobalName'][df['GlobalName']==''] = df.apply(lambda x: x['CleanName'] if x['IsPerson'] == True else '', axis = 1) %timeit df['GlobalName'][df['GlobalName']==''] = np.where(df['IsPerson']==True, df['CleanName'], '') %timeit df['GlobalName'] = np.where((df['IsPerson']==True) & (df['GlobalName']==''), df['CleanName'], df['GlobalName']) 39.6 ms 40.6 ms 1.21 ms 第 3 个解决方案比其他 2 个解决方案更快。