[英]Unable to filter pandas dataframe based on set of substrings
目標是找出列中的每個單元格是否包含一組字符串中的任何一個字符串。
給定下面的df;
df = pd.DataFrame({'Date': ['1 December 2020', 'May 2020', 'Random value', 'may 2019']})
和一個標志子字符串
stk_list = ['December','May']
它應該返回
True; True; False; True
但是,使用下面的代碼
stk_list = ['December','May']
df = pd.DataFrame({'Date': ['1 December 2020', 'May 2020', 'Random value', 'may 2019']})
dfxx=df['Date'].isin(stk_list)
它返回
False; False;False;False
我可以知道我在哪里做錯了嗎?
您可以為此目的使用regex
:
pattern = '|'.join(s.lower() for s in stk_list)
df.Date.str.lower().str.contains(pattern)
您可能想要修改pattern
,以便它只檢查整個單詞:
pattern = r"\b({})\b".format('|'.join(s.lower() for s in stk_list))
這里\b
表示單詞邊界,所以這個模式不會maybe
為True
。
您可以使用apply
:
dfxx=df['Date'].apply(lambda x: any([i in x for i in stk_list])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.