根据列表中的部分匹配字符串筛选DataFrame



我有一个包含许多类别的数据框架。这里列出了其中的一些

Bank 
(0827) ОСП                                  
(0283) Банк ВТБ (ПАО)                       
(0822) ОСИП_ПЕНСЫ                           
(0260) АО Тинькофф Банк                     
(0755) ПАО Совкомбанк

我想基于字符串匹配过滤数据帧。我不想传递整个行名,我想传递像['Совкомбанк', 'Тинькофф']这样的东西。预期的结果是:

(0260) АО Тинькофф Банк                     
(0755) ПАО Совкомбанк

我试过df = df[df[column_name].isin(values)],但我没有工作。

.isin将检查精确匹配。你要找的是.str.contains:

match_strs =  ['Совкомбанк', 'Тинькофф']
df = df[df[column_name].str.contains("(" + "|".join(match_strs) + ")")]

您可以在str.contains(...)中使用自定义正则表达式来搜索您想要的任何内容。

如果你只想传递names,你必须清理Bank

df[df['Bank'].str.split(' ').str.get(1).isin(values)]

最新更新