Python:根据 boolean 条件消除 Pandas DataFrame 中的行

标签 python pandas boolean dataframe

假设我在 Pandas 中有一个 DataFrame,例如

   c1   c2
0  'ab'  1
1  'ac'  0
2  'bd'  0
3  'fa'  1
4  'de'  0

我希望它显示 c1 不包含“a”的所有行。我想要的输出是:

   c1   c2
2  'bd'  0
4  'de'  0

我的第一次尝试是使用 df.loc,如下所示:

df.loc['a' not in df['c1']]

对于搜索特定值,df.loc 工作正常,但对于基于 False 条件('a' 不在 df['c1'] 中)的搜索则不然。

我知道我可以做相反的事情。我的意思是,我可以通过以下代码返回“c1”列中包含“a”的所有行:

df.loc[df['c1'].str.contains('a')]

但我就是想不出一种优雅/简洁的方式来做到相反。我怎样才能做到这一点?

最佳答案

使用~来翻转你的 boolean 值系列:

df.loc[~df['c1'].str.contains('a')]

关于Python:根据 boolean 条件消除 Pandas DataFrame 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610061/

相关文章:

python - 将函数应用/映射到前一行

ruby - 你如何在 Redis 中设置一个 boolean 值?

c++ - C++ 中将内置类型 (int) 转换为 bool 的首选方法是什么?

python - 尝试抓取任何地方或餐厅的谷歌首页地址,但不幸的是

python - 在 Pandas 中 : Interpolate between two rows such that the sum of interpolated values + second row = old value of the second row

c++ - 你能把这个调试宏从 C++ 翻译成 Python 吗?

python - 如何确定数据框列是否包含特定列表,与其顺序无关?

ruby - 在条件中使用逻辑或运算符

python - 根据 pandas 中的其他数据帧过滤一个数据帧

python - 在python中获取列组合及其各自索引的乘积的最大值