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

Pandas - 搜索词(不考虑搜索词的大小写)

Pandas - 搜索词(不考虑搜索词的大小写)

拉莫斯之舞 2021-08-17 17:03:12
我有以下代码在整个 Dataframe 中搜索字符串。df[df.apply(lambda x: x.astype(str).str.contains(search)).any(axis=1)]然而,我有一个问题,如果搜索团队在大写字母中,它会失败。有什么方法可以搜索整个 Dataframe,而不管 Dataframe 中的搜索词是大写还是小写。
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

我相信你需要参数flagswith re.Ifor ignore cases:


import re


df[df.apply(lambda x: x.astype(str).str.contains(search, flags=re.I)).any(axis=1)]

另一种解决方案是转换每一列和search字符串:


df[df.apply(lambda x: x.astype(str).str.lower().str.contains(search.lower())).any(axis=1)]



查看完整回答
反对 回复 2021-08-17
?
慕仙森

TA贡献1827条经验 获得超7个赞

使用 applymap 应用于数据帧的每个单元格。


>>> df = pd.DataFrame({'x':['this','is'], 'y':['test', 'Hi']})

>>> search = 'HI'

>>> df.applymap(lambda x: search.lower() in x.lower())

       x      y

0   True  False

1  False   True

如果你需要每一行


>>> df.applymap(lambda x: search.lower() in x.lower()).any(axis=1)

0    True

1    True

dtype: bool


查看完整回答
反对 回复 2021-08-17
?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以使用:

df[df.applymap(str.lower).apply(lambda x: x.astype(str).str.contains(search)).any(axis=1)]



查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

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