为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

函数式编程 2021-06-04 21:05:28
我有一个字符串。我需要查找该字符串中的关键字是否存在于我的数据框中。如果存在,我需要返回该关键字。细绳: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 Person3ASH     ABE     SAMJOE     LISA    MAXHARRY   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”
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

如果您重复执行此操作,您可能希望通过 .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在顶部添加一个循环会使情况变得更糟。


查看完整回答
反对 回复 2021-06-09
?
白板的微信

TA贡献1883条经验 获得超3个赞


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

Out[741]: ['JOE']


查看完整回答
反对 回复 2021-06-09
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信