猿问

使用 lamda 函数检查 URL 中是否存在列中的值

我有一个有 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。


慕丝7291255
浏览 203回答 2
2回答

德玛西亚99

假设您的数据是干净的,列表理解是相对有效的: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)

噜噜哒

检查 numpy core.defchararray.finddf['exists']=np.core.defchararray.find(df.URL.values.astype(str),df.Username.values)!=-1
随时随地看视频慕课网APP

相关分类

Python
我要回答