我有以下代码在整个数据框中搜索字符串。
df[df.apply(lambda x: x.astype(str).str.contains(search)).any(axis=1)]
但是,我有一个问题,即如果搜索团队使用大写字母,它将失败。无论Dataframe中的搜索词是大写还是小写,有什么办法可以搜索整个数据框。
答案 0 :(得分:2)
我认为您需要使用flags
和参数re.I
来忽略情况:
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)]
答案 1 :(得分:0)
您可以使用:
df[df.applymap(str.lower).apply(lambda x: x.astype(str).str.contains(search)).any(axis=1)]
答案 2 :(得分:0)
使用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