我有一個有 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 回答

德瑪西亞99
TA貢獻1770條經驗 獲得超3個贊
假設您的數據是干凈的,列表理解是相對有效的:
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)

嚕嚕噠
TA貢獻1784條經驗 獲得超7個贊
檢查 numpy
core.defchararray.find
df['exists']=np.core.defchararray.find(df.URL.values.astype(str),df.Username.values)!=-1
添加回答
舉報
0/150
提交
取消