我有一个包含许多类别的数据框架。这里列出了其中的一些
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)]