python - 如果在数据帧列中找到则返回字符串的关键字

标签 python regex string pandas dataframe

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

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

字符串:

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 对您的值进行哈希处理。此外,您还可以将 mapstr.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/

相关文章:

php - 将一段拆分为 160 个字符的文本消息

python - Firestore .get() 导致超出截止日期

python - 如何将列表中的每个元素分配给单独的变量?

mysql - RLIKE 与子查询?

c - Sscanf - 使用不同的分隔符进行解析

visual-studio-2008 - Visual Studio 2008喜欢在我的代码中插入随机字符串

python - 呈现按日期分组的帖子列表

python - 为什么打开资源管理器窗口并通过Python的子进程选择文件会返回错误代码1

正则表达式匹配问号后的所有内容?

ruby - 如何编写正则表达式从字符串中提取数值?