我知道这个问题已经被问了一百万遍了,但是我仍然面临着挑战。我有一个要在pandas数据框中搜索的完整单词的列表。
Counties_List = ['MOMBASA','KWALE','LAMU']
df2 = df1[df1['County/ Sub-County'].str.contains('|'.join(Counties_List))]
上面的代码部分起作用,因为它带来了我不需要的其他行,例如LAMU-NORTH等。因此,我对列表中的一项进行了正则表达式搜索,例如仅LAMU,并且代码按预期工作。如何映射其余所有列表项,以便它们可以出现在df2中。我想要一个数据框,该数据框具有我包含在列表中的完整单词。
df2[df2['County/ Sub-County'].str.contains('^LAMU$')]
答案 0 :(得分:1)
似乎您希望Countries_List
列中Countey/ Sub-County
中的项目完全匹配。您可以使用
df2 = df1[df1['County/ Sub-County'].str.contains(r'^(?:{})$'.format('|'.join(Counties_List)))]
df2 = df1[df1['County/ Sub-County'].str.contains(rf'^(?:{"|".join(Counties_List)})$')] # Python 3.7+
在(?i)
之前添加^
,以启用不区分大小写的匹配。
或者,如果您需要固定的字符串比较,只需使用isin
:
df2 = df1[df1['County/ Sub-County'].isin(Counties_List)]
将由Counties_List = ['MOMBASA' ,'KWALE' ,'LAMU']
列表产生的正则表达式看起来像^(?:MOMBASA|KWALE|LAMU)$
。非捕获组(?:...)
将确保将锚应用于该组中的所有替代方案。
请参见regex demo。