python - 如果在数据框列中找到,则返回字符串的关键字
问题描述
我有一个字符串。我需要查找该字符串中的关键字是否存在于我的数据框中。
如果存在,我需要返回该关键字。
细绳:
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
withstr.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
,但不建议这样做。字符串操作 viapd.Series.str
目前是出了名的慢。lambda
在顶部添加一个循环会使情况变得更糟。
推荐阅读
- python - Kivy Action按钮无法通过python更新图标
- c++ - 为什么在我输入任何值之前打印此代码?
- java - 显示一年中最低的平均价格,以及该价格的周数,以及它发生的月份的名称
- python - 基于元数据从对象存储中检索对象
- perl - 哪个作业在哪个节点上运行?
- react-admin - 如何使用 ArrayInput 解析和格式化值转换道具
- python - 错误“utf-8”编解码器无法解码位置 268 中的字节 0x96:读取文件 csv 时的起始字节无效
- java - Android Studio View 的显示方式与我的手机(三星 Galaxy S5)不同
- ansible - 在模板 jinja2 方面需要帮助
- c++ - 索引数组时我应该总是使用 size_t 吗?