当前位置: 首页 > 知识库问答 >
问题:

熊猫如何删除包含必需字符串的行

商松
2023-03-14

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

假设我有以下数据帧:

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

共有1个答案

高兴贤
2023-03-14

对于筛选字符串:

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

并测试每行的所有Trues:

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

反转布尔掩码:

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

对于过滤子串,使用包含应用

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
 类似资料:
  • 问题内容: 我对此有一个类似的问题:Pandas DataFrame:从一列中的字符串中删除不需要的部分 。 所以我用了: 大多数项目以“ PPI /”开头,但并非全部。似乎当没有’PPI /’后缀的项目遇到此错误时: AttributeError:“ float”对象没有属性“ lstrip” 我在这里想念什么吗? 问题答案: 使用replace: 或string.replace:

  • 问题内容: 我正在尝试从文本文件中读取文本,读取行,删除包含特定字符串的行(在这种情况下为“坏”和“顽皮”)。我写的代码是这样的: 我这样写,但没有成功。 重要的一件事是,如果文本的内容是这样的: 我不希望输出有空行。所以不喜欢: 但是像这样: 我应该从上面的代码中编辑什么? 问题答案: 您可以像这样使代码更简单,更易读 使用上下文管理器和任何。

  • 问题内容: 这个问题已经在这里有了答案 : 在熊猫中的DataFrame上搜索“不包含” (6个答案) 去年关闭。 我在python中有一个非常大的数据框,我想在特定列中删除所有具有特定字符串的行。 例如,我想在数据框的列C中删除所有具有字符串“ XYZ”作为子字符串的行。 可以使用.drop()方法以一种有效的方式来实现吗? 问题答案: pandas具有向量化的字符串操作,因此您可以过滤掉包含不

  • 我在python中有一个非常大的数据帧,我想把所有具有特定字符串的行放到特定列中。 例如,我想删除所有在数据帧的C列中有字符串“XYZ”作为子字符串的行。 这可以通过使用有效的方式实现。drop()方法?

  • 问题内容: 我有一个类似于以下内容的数据框: 我希望输出为以下格式: 想要从“名称”列中删除所有数字。 我最近来的是使用以下代码在 单元 级别进行的: 任何想法如何在 系列 / 数据框 级别上以更好的方式 实现 。 问题答案: 您可以结合使用正则表达式将str.replace应用于列: 输出: 在正则表达式中代表“任何数字”,代表“一个或多个”。 因此,其含义是:“将字符串中所有出现的数字全部替换

  • 我有一个熊猫数据帧,其中有一列文件列表 我想从中的每个条目中删除文件扩展名。如何完成此操作? 我尝试了: 但是当我用<code>df查看列条目时。head(),没有任何变化。 如何做到这一点?