Python 使用lamda函数检查URL中是否存在列中的值
我有一个数据框,它有两列。一个是URL,另一个是用户名Python 使用lamda函数检查URL中是否存在列中的值,python,string,pandas,dataframe,lambda,Python,String,Pandas,Dataframe,Lambda,我有一个数据框,它有两列。一个是URL,另一个是用户名 +----------------------------------------+---------------+ | URL | Username | +----------------------------------------+---------------+ | johnsmith/stackoverflow.com/?=abc | jo
+----------------------------------------+---------------+
| 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。假设您的数据是干净的,列表理解相对有效:
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.find检查
df['exists']=np.core.defchararray.find(df.URL.values.astype(str),df.Username.values)!=-1