Pandas删除所有列中包含"required value"的所有行

Piy*_*are 3 python dataframe pandas

我有以下数据帧

 A     B    C    D
BUY   150   Q   2018
SELL  63    Q   2018
N      N    N    N

V      v    v    v
SELL  53    Q   2018
Run Code Online (Sandbox Code Playgroud)

我想删除包含所有列V或N的所有行

输出数据框将是: -

    A     B     C    D
   BUY   150    Q   2018
   SELL  63     Q   2018

   SELL  53     Q   2018
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

用途boolean indexing:

df = df[~df.isin(['V', 'v', 'N', 'n']).all(axis=1)]
print (df)
      A    B  C     D
0   BUY  150  Q  2018
1  SELL   63  Q  2018
4  SELL   53  Q  2018
Run Code Online (Sandbox Code Playgroud)

细节:

首先比较isin:

print (df.isin(['V', 'v', 'N', 'n']))
       A      B      C      D
0  False  False  False  False
1  False  False  False  False
2   True   True   True   True
3   True   True   True   True
4  False  False  False  False
Run Code Online (Sandbox Code Playgroud)

如果每行获取行:all True

print (df.isin(['V', 'v', 'N', 'n']).all(axis=1))
0    False
1    False
2     True
3     True
4    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

反转条件~:

print (~df.isin(['V', 'v', 'N', 'n']).all(axis=1))
0     True
1     True
2    False
3    False
4     True
dtype: bool
Run Code Online (Sandbox Code Playgroud)