python - 在Python中的数据框的所有列中搜索字符串

标签 python pandas dataframe

我正在尝试在数据框的所有列中查找一个字符串。

import pandas as pd
df = pd.DataFrame([['a', 'b'], ['c', 'd'], ['e', 'a']], columns=["A", "B"])

for col in df:
        df[col].str.contains('a')

0     True
1    False
2    False
Name: A, dtype: bool
0    False
1    False
2     True
Name: B, dtype: bool

但是,上面的代码只返回 bool 值,并没有返回我想要的格式(以表格形式显示行和列),这可以在特定列中搜索时实现:

df[df.A == 'a']

   A  B
0  a  b

有人能帮忙吗?

最佳答案

创建 bool 值 DataFrame 并通过 DataFrame.any 检查每行至少一个 True并按 boolean indexing 过滤:

df = df[df.eq('a').any(axis=1)]
print (df)
   A  B
0  a  b
2  e  a

详细信息:

print (df.eq('a'))
       A      B
0   True  False
1  False  False
2  False   True

print(df.eq('a').any(axis=1))
0     True
1    False
2     True
dtype: bool

如果要检查 substring 使用 str.contains对于 boolean DataFrame:

df = pd.DataFrame([['ad', 'b'], ['c', 'd'], ['e', 'asw']], columns=["A", "B"])
print (df)
    A    B
0  ad    b
1   c    d
2   e  asw

df = df[df.apply(lambda x: x.str.contains('a')).any(axis=1)]

applymap通过 in 进行元素明智的检查:

df = df[df.applymap(lambda x: 'a' in x).any(axis=1)]

print (df)
    A    B
0  ad    b
2   e  asw

关于python - 在Python中的数据框的所有列中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48851749/

相关文章:

python - 在python中执行列表中实例的特定方法

python - 在 Python 中向后迭代字典

python - 如何将新列添加到现有数据框并用另一列中的部分数据填充它?

python - 如何计算 python 中我的列中的行的编辑比/距离?

Python正则表达式查找所有数字和点

Python Child 不能使用 Parent 导入的模块

python - 绘制数据框的散点图

python - 如何在 pandas 中使用 group by 时将 "first"和 "last"函数应用于列?

python - ValueError : Shape of passed values is X, 索引暗示 Pandas 应用和转换中的 Y

从 R 中的字符串列中删除字符串列表