我有一根绳子。我需要查找该字符串中的关键字是否存在于我的数据框中。
如果存在,我需要返回该关键字。
字符串:
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”
最佳答案
如果您重复执行此操作,您可能希望通过 set
对您的值进行哈希处理。此外,您还可以将 map
与 str.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 进行的字符串操作非常慢。在顶部添加一个 lambda 循环会使情况变得更糟。
关于python - 如果在数据帧列中找到则返回字符串的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52149058/