2017-06-17 61 views
1

如何根据单元格值删除Pandas Dataframe中的一行而不给出特定的列名称?基于单元格值从Pandas 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 

所以我最终数据帧

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

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

回答

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 
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 
相关问题