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

删除给定字符串条件的熊猫中的数据

皮自明
2023-03-14

考虑到以下情况,我很难理解这里的机制

我有一个数据帧读取。csv

  a1 b1 c1
1 aa bb cc
2 ab ba ca 

df.drop(df['a1'].str.contains('aa',case = False))

我想删除列a1中包含“aa”的所有行

我相信我已经尝试了这里的一切,但仍然得到了:

ValueError:标签[False False False...False False]轴中不包含

是的,我也试过

skipinitialspace=True
axis=1

任何帮助都将不胜感激,谢谢。

共有1个答案

长孙沈义
2023-03-14

str.contains返回掩码:

df['a1'].str.contains('aa',case = False)

1     True
2    False
Name: a1, dtype: bool

但是,drop接受索引标签,而不是布尔掩码。如果打开上的“帮助”下拉列表,您可能会看到以下第一手信息:

?df.drop

Signature: df.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')
Docstring:
Return new object with labels in requested axis removed.

Parameters
----------
labels : single label or list-like
    Index or column labels to drop.

您可以从掩码中找出索引标签,并将其传递给删除

idx = df.index[df['a1'].str.contains('aa')]
df.drop(idx)

   a1  b1  c1
2  ab  ba  ca

但是,这风太大了,所以我建议只使用pandaic方法,根据条件删除行,布尔索引:

df[~df['a1'].str.contains('aa')]

   a1  b1  c1
2  ab  ba  ca

如果有人想删除列表中包含字符串的行

df = df[~df['a1'].str.contains('|'.join(my_list))]

确保去除白色空间。归功于https://stackoverflow.com/a/45681254/9500464

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

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

  • 问题内容: 我有以下数据框 基本上我可以如下过滤行 我可以如下所示删除/删除一行 但是我想根据条件删除一定数量的行,我该怎么做? 问题答案: 最好的是但需要反转条件-使所有值相等且更高,如下所示: 与功能相同: 另一种可能的解决方案是通过以下方法反转掩码:

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

  • 我想从字符串类型的熊猫列中删除小数点 Df 我正试着去掉那一栏的小数 df['Net Sales']已经是字符串类型。 我尝试如下: < code>df['净销售额'] = df['净销售额']。astype(str)。替换(' \.0 ','',regex=True) 但我得到的错误如下: < code>ValueError:基数为10的int()的文本无效:“1567.55” 谢谢。

  • 问题内容: 我有一个熊猫DataFrame,里面有很多值。 如何删除这样的列? 我试图这样做: 有更优雅的方法吗? 问题答案: 这是保留每列中小于或等于指定数量的nan的列的另一种选择: 在我的测试中,这似乎比李建勋在我测试的案例中建议的放置列方法要快一些: