根据列中的字符串过滤数据框[重复]

Posted

技术标签:

【中文标题】根据列中的字符串过滤数据框[重复]【英文标题】:Filter dataframe based on string within column [duplicate] 【发布时间】:2019-12-27 05:15:09 【问题描述】:

所以为了简单起见,因为我的数据集非常大,假设我有一个数据框:

df = pd.DataFrame([['Foo', 'Foo1'], ['Bar', 'Bar2'], ['FooBar', 'FooBar3']],
columns= ['Col_A', 'Col_B'])

当指定的列行包含部分、不区分大小写的字符串 (foo) 时,我需要以一种可以消除整行的方式过滤此数据帧。在这种情况下,我尝试这样做无济于事......PS,我的正则表达式技能很垃圾,所以如果它因为这个原因不起作用,请原谅我。

df = df[df['Col_A'] != '^[Ff][Oo][Oo].*']

由于我的数据集的大小,效率是一个问题,这就是我没有选择迭代路线的原因。提前致谢。

【问题讨论】:

@Wiktor Stribiżew 您标记为重复的问题似乎涉及过滤整个列,而不是列中包含的内容。 【参考方案1】:

另一种方法是将str.startswithstr.lowerNOT 运算符一起使用~

df[~df['Col_A'].str.lower().str.startswith('foo')]

输出

  Col_A Col_B
1   Bar  Bar2

【讨论】:

【参考方案2】:

使用str.match

df[~df['Col_A'].str.match('^[Ff][Oo][Oo].*')]

结果

    Col_A   Col_B
1   Bar     Bar2

【讨论】:

这个解决方案正是我所需要的,而且似乎可以适应我需要这样做的其他情况。非常感谢。

以上是关于根据列中的字符串过滤数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果子字符串列表中的任何值包含在数据框中的任何列中,则过滤行

根据另一列的值过滤数据框列[重复]

如果列中的值在一组值列表中,则过滤数据框行[重复]

根据 R 中列中的值过滤数据框

根据列中的条件对数据框中的行进行子集/过滤

通过从多个列中删除匹配的电子邮件域来过滤 Pandas 数据框