python - Pandas 如何删除包含所需字符串的行

标签 python python-3.x pandas

我想删除所有包含所需字符串的行,

假设我有以下数据框:

A    B    C
1    a    x
w    g    n
3    l    p
j    p    v

我想删除所有包含字符串 p 的行。我已经搜索过它,但大部分答案都是基于列名,在我的情况下,我不会知道它可以出现在任何列中的列。

输出数据框应该是

A    B    C
1    a    x
w    g    n

最佳答案

用于过滤字符串:

df = df[(df != 'p').all(axis=1)]

比较不等于:

print ((df != 'p'))
      A      B      C
0  True   True   True
1  True   True   True
2  True   True  False
3  True  False   True

并测试每行的所有 True:

print ((df != 'p').all(axis=1))
0     True
1     True
2    False
3    False
dtype: bool

或者:

df = df[~(df == 'p').any(axis=1)]

相等测试:

print ((df == 'p'))
       A      B      C
0  False  False  False
1  False  False  False
2  False  False   True
3  False   True  False

每行至少测试一个True:

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

反转 bool 掩码:

print (~(df == 'p').any(axis=1))
0     True
1     True
2    False
3    False
dtype: bool

要过滤子字符串,请使用 contains使用应用:

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

或者:

df = df[~df.stack().astype(str).str.contains('p').unstack().any(axis=1)]

print (df)
   A  B  C
0  1  a  x
1  w  g  n

关于python - Pandas 如何删除包含所需字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51168105/

相关文章:

python - pyparsing 中的可选字符串段

python - while True 与 while {condition}

python-3.x - 当我通过远程 ssh 使用 vscode 时如何在调试控制台中可视化图像

python - Pandas:合并名称相似的列

python - 日期时间转换 - pandas 速度慢

python - DataFrame 创建 - 重新索引

python - gc.collect() 函数到底做了什么?

python - 使用来自另一个数据帧的数据(有条件)在数据帧中创建列,而不使用 for 循环

python - 将 Pandas 'categorical' dtype 与 sklearn 一起使用

python - 导入错误: No module named class_vis