Python 返回字符串的关键字(如果在dataframe列中找到)

Python 返回字符串的关键字(如果在dataframe列中找到),python,regex,string,pandas,dataframe,Python,Regex,String,Pandas,Dataframe,我有一根绳子。我需要找到该字符串中的关键字是否存在于我的数据帧中 如果存在,我需要返回该关键字 字符串: question="Joe is Available" question=question.upper() str_list=question.split() str_list df=pd.DataFrame({"Person1":("Ash","Joe","Harry"),"Person2":("Abe","Lisa","Katty",),"Person3":("Sam","Max","

我有一根绳子。我需要找到该字符串中的关键字是否存在于我的数据帧中

如果存在,我需要返回该关键字

字符串:

question="Joe is Available"
question=question.upper()
str_list=question.split()
str_list
df=pd.DataFrame({"Person1":("Ash","Joe","Harry"),"Person2":("Abe","Lisa","Katty",),"Person3":("Sam","Max","Stone")})
df=df.apply(lambda x: x.astype(str).str.upper())


Person1 Person2 Person3
ASH     ABE     SAM
JOE     LISA    MAX
HARRY   KATTY   STONE
return_field=""
for x in str_list:
    print(x)
    for i in df.iterrows():
        if(df.str.contains(x)):
            return_field=x
出[107]:

['JOE', 'IS', 'AVAILABLE']
数据帧:

question="Joe is Available"
question=question.upper()
str_list=question.split()
str_list
df=pd.DataFrame({"Person1":("Ash","Joe","Harry"),"Person2":("Abe","Lisa","Katty",),"Person3":("Sam","Max","Stone")})
df=df.apply(lambda x: x.astype(str).str.upper())


Person1 Person2 Person3
ASH     ABE     SAM
JOE     LISA    MAX
HARRY   KATTY   STONE
return_field=""
for x in str_list:
    print(x)
    for i in df.iterrows():
        if(df.str.contains(x)):
            return_field=x
我的尝试:

question="Joe is Available"
question=question.upper()
str_list=question.split()
str_list
df=pd.DataFrame({"Person1":("Ash","Joe","Harry"),"Person2":("Abe","Lisa","Katty",),"Person3":("Sam","Max","Stone")})
df=df.apply(lambda x: x.astype(str).str.upper())


Person1 Person2 Person3
ASH     ABE     SAM
JOE     LISA    MAX
HARRY   KATTY   STONE
return_field=""
for x in str_list:
    print(x)
    for i in df.iterrows():
        if(df.str.contains(x)):
            return_field=x
给我AttributeError:“DataFrame”对象没有属性“str”

预期产出

由于Joe出现在数据帧中,它应该返回“Joe”

Use

In [741]: [x for x in str_list if x in df.values]
Out[741]: ['JOE']

如果重复执行此操作,您可能希望通过
set
散列值。此外,您还可以使用
map
str.upper
将数据帧值转换为大写1:


1您可以使用
pd.DataFrame.apply
+
lambda
,但不建议这样做。通过
pd.Series.str
执行的字符串操作目前速度非常慢。在顶部添加
lambda
循环会使情况变得更糟