![](/img/trans.png)
[英]Pandas Dataframe - How to check if the string value in column A is available in the list of string items in column B
[英]How to check if Pandas column has value from list of string?
我有一個 dataframe 和一個列表
df = pd.DataFrame({'IDs':[1234,5346,1234,8793,8793],
'Names':['APPLE ABCD ONE','APPLE ABCD','NO STRAWBERRY YES','ORANGE AVAILABLE','TEA AVAILABLE']})
kw = ['APPLE ABCD', 'ORANGE', 'LEMONS', 'STRAWBERRY', 'BLUEBERRY', 'TEA COFFEE']
我想創建一個新的列flag
,如果Names
列包含來自kw
的關鍵字,則標志將為 1,否則為 0。
預期 Output:
IDs Names Flag
0 1234 APPLE ABCD ONE 1
1 5346 APPLE ABCD 1
2 1234 NO STRAWBERRY YES 1
3 8793 ORANGE AVAILABLE 1
4 8793 TEA AVAILABLE 0
我可以使用以下代碼獲得 output:
ind=[]
for idx, value in df.iterrows():
x = 0
for u in kw:
if u in value['Names']:
ind.append(True)
x = 1
break
if x == 0:
ind.append(False)
df['flag'] = ind
是否有另一種方法可以避免 for 循環並使其更有效?
使用apply
和lambda
例如:
df['Names'].apply(lambda x: any([k in x for k in kw]))
0 True
1 True
2 True
3 True
4 False
Name: Names, dtype: bool
您可以使用熊貓的isin函數
df['Names'].isin(kw)
嗨,可以從列表中返回值嗎?
ID 名稱 標志 0 1234 APPLE ABCD ONE APPLE 1 5346 APPLE ABCD APPLE 2 1234 NO STRAWBERRY YES STRAWBERRY 3 8793 ORANGE AVAILABLE ORANGE 4 8793 TEA AVAILABLE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.