Désolé juste d'entrer dans Pandas, cela semble être une question très simple. Comment puis-je utiliser la isin('X')
pour supprimer les lignes qui sont dans la liste X
? Dans R, j'écrirais !which(a %in% b)
.
Vous pouvez utiliser numpy.logical_not
pour inverser le tableau booléen renvoyé par isin
:
In [63]: s = pd.Series(np.arange(10.0))
In [64]: x = range(4, 8)
In [65]: mask = np.logical_not(s.isin(x))
In [66]: s[mask]
Out[66]:
0 0
1 1
2 2
3 3
8 8
9 9
Comme indiqué dans le commentaire de Wes McKinney, vous pouvez également utiliser
s[~s.isin(x)]
Vous avez plusieurs options. En rassemblant certaines des réponses ci-dessus et le réponse acceptée de ce post vous pouvez faire:
1. df[-df["column"].isin(["value"])]
2. df[~df["column"].isin(["value"])]
3. df[df["column"].isin(["value"]) == False]
4. df[np.logical_not(df["column"].isin(["value"]))]
Remarque: pour l'option 4, vous devrez import numpy as np
Tout ce que vous avez à faire est de créer un sous-ensemble de votre trame de données où la méthode isin est évaluée à False:
df = df[df['Column Name'].isin(['Value']) == False]
Vous pouvez utiliser le DataFrame.select
méthode:
In [1]: df = pd.DataFrame([[1,2],[3,4]], index=['A','B'])
In [2]: df
Out[2]:
0 1
A 1 2
B 3 4
In [3]: L = ['A']
In [4]: df.select(lambda x: x in L)
Out[4]:
0 1
A 1 2