根据单元格值从Pandas DataFrame中删除行

时间:2017-06-17 15:55:38

标签: python pandas dataframe

如何根据单元格值删除Pandas Dataframe中的行而不提供特定的列名?

例如:

我有这个DataFrame,我想删除一个单元格包含值的所有行' d'。

   A B C D
1  1 2 d 5
2  1 3 4 0
3  d 2 1 2
4  3 2 1 7

所以我最终得到了DataFrame

  A B C D
2 1 3 4 0
4 3 2 1 7

有没有办法实现这个目标?我的谷歌技能只找到了需要特定列名称的解决方案。

2 个答案:

答案 0 :(得分:5)

你可以这样做:

df = df[~df.select_dtypes(['object']).eq('d').any(1)]

结果:

In [23]: df
Out[23]:
   A  B  C  D
2  1  3  4  0
4  3  2  1  7

答案 1 :(得分:3)

您可以使用astypeneall的另一种方式:

df[df.astype(str).ne('d').all(axis=1)]

输出:

   A  B  C  D
2  1  3  4  0
4  3  2  1  7

另一种方式:

df.where(df.values != 'd').dropna()

输出:

   A  B  C  D
2  1  3  4  0
4  3  2  1  7