使用lamda函数

时间:2019-01-24 03:27:39

标签: python string pandas dataframe lambda

我有一个包含2列的数据框。一个是URL,另一个是用户名。

+----------------------------------------+---------------+
|                  URL                   |   Username    |
+----------------------------------------+---------------+
| johnsmith/stackoverflow.com/?=abc      | johnsmith     |
| michealrod/stackoverflow.com/?=payment | michealrod    |
| stephaniejean/stackoverflow.com/?=abc  | stephaniejean |
+----------------------------------------+---------------+

我想编写一个lambda函数来检查用户名是否存在于URL中。我正在尝试编写类似的内容,但出现错误

df['exists'] = df.apply(lambda x : df['Username'] in df['URL']).any()

因此,基本上,如果用户名是URL的一部分,我尝试获取TRUE,如果URL中不存在用户名,则为False。

2 个答案:

答案 0 :(得分:2)

假设您的数据是干净的,则列表理解相对有效:

df['exists'] = [x in y for x, y in zip(df['Username'], df['URL'])]

您可以使用apply,但性能较差:

df['exists'] = df.apply(lambda row: row['Username'] in row['URL'], axis=1)

答案 1 :(得分:1)

使用numpy core.defchararray.find

进行检查
df['exists']=np.core.defchararray.find(df.URL.values.astype(str),df.Username.values)!=-1