Pandas 从包含子字符串的数据帧列表中提取数据帧

Pandas 从包含子字符串的数据帧列表中提取数据帧,pandas,dataframe,string-matching,Pandas,Dataframe,String Matching,我有以下python中的数据帧,它们是列表的一部分 dataframe_list= []## CREATE AN EMPTY LIST import pandas as pd A=pd.DataFrame() A["name"]=["A", "A", "A"] A["att"]=["New World", "Hello", "Big Day now

我有以下python中的数据帧,它们是列表的一部分

dataframe_list= []## CREATE AN EMPTY LIST
import pandas as pd
A=pd.DataFrame()
A["name"]=["A", "A", "A"]
A["att"]=["New World", "Hello", "Big Day now"]
B=pd.DataFrame()
B["name"]=["A2", "A2", "A2"]
B["Col"]=["L", "B", "B"]
B["CC"]=["old", "Hello", "Big Day now"]
C=pd.DataFrame()
C["name"]=["Brave old World", "A", "A"]
以上数据帧的大小不同。它们存储为一个列表,如下所示

 dataframe_list.append(A)
 dataframe_list.append(B)
 dataframe_list.append(C)
我试图提取两个包含单词world的数据帧(不考虑大小写)。我尝试了以下代码

list1=["World"]
result=[x for x in dataframe_list if any(x.isin(list1) ) ]
然而,这会产生所有的数据帧。预期的输出是数据帧A、C。我不确定我在这里哪里犯了错误

用于
系列
并按单词
w
测试,而不是一个元素列表,还添加了单词边界,用于仅匹配整个单词:

w="World"
result=[x for x in dataframe_list if x.stack().str.contains(rf"\b{w}\b", case=False).any()]
print (result)
[  name          att
0    A    New World
1    A        Hello
2    A  Big Day now,               name
0  Brave old World
1                A
2                A]
编辑:用于单词列表,用于正则表达式或:

list1=["World",'Hello']
pat = '|'.join(rf"\b{x}\b" for x in list1)
result=[x for x in dataframe_list if x.stack().str.contains(pat, case=False).any()]
用于
系列
和按单词
w
测试,而不是一个元素列表,还添加了单词边界,用于仅匹配整个单词:

w="World"
result=[x for x in dataframe_list if x.stack().str.contains(rf"\b{w}\b", case=False).any()]
print (result)
[  name          att
0    A    New World
1    A        Hello
2    A  Big Day now,               name
0  Brave old World
1                A
2                A]
编辑:用于单词列表,用于正则表达式或:

list1=["World",'Hello']
pat = '|'.join(rf"\b{x}\b" for x in list1)
result=[x for x in dataframe_list if x.stack().str.contains(pat, case=False).any()]

非常感谢。快速提问。必须拆分字符串以匹配此处所做的小子字符串吗?再次感谢。是否可以传递单词列表而不是字符串done@Raghavanvmvs-答案已编辑。在这两种解决方案中还添加了bondaries一词。这意味着如果
勇敢的旧世界不
勇敢的旧世界1
这是不匹配的,但是
勇敢的旧世界
匹配谢谢你。快速提问。必须拆分字符串以匹配此处所做的小子字符串吗?再次感谢。是否可以传递单词列表而不是字符串done@Raghavanvmvs-答案已编辑。在这两种解决方案中还添加了bondaries一词。这意味着如果
勇敢的旧世界不
勇敢的旧世界1
则不匹配,但
勇敢的旧世界
匹配