猿问

如果在数据框列中找到,则返回字符串的关键字

我有一个字符串。我需要查找该字符串中的关键字是否存在于我的数据框中。


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


细绳:


question="Joe is Available"

question=question.upper()

str_list=question.split()

str_list

出[107]:


['JOE', 'IS', 'AVAILABLE']

数据框:


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”


函数式编程
浏览 122回答 2
2回答

慕姐8265434

如果您重复执行此操作,您可能希望通过 .hash 散列您的值set。此外,您可以使用mapwithstr.upper将数据帧值转换为大写1:str_all = set(map(str.upper, df.values.ravel()))question = "Joe is Available"str_search = set(question.upper().split())res = str_search & str_all# {'JOE'}1您可以使用pd.DataFrame.apply+ lambda,但不推荐这样做。pd.Series.str目前,字符串操作 via是出了名的慢。lambda在顶部添加一个循环会使情况变得更糟。

白板的微信

用In [741]: [x for x in str_list if x in df.values]Out[741]: ['JOE']
随时随地看视频慕课网APP

相关分类

Python
我要回答