it-swarm.com.de

Zeilen ohne .isin ('X') entfernen

Tut mir leid, dass ich gerade mit Pandas in Berührung gekommen bin. Dies scheint eine sehr einfache Frage zu sein. Wie kann ich die Funktion isin('X') verwenden, um Zeilen zu entfernen, die in der Liste X sind? In R würde ich !which(a %in% b) schreiben.

51
DrewH

Sie können numpy.logical_not um das von isin zurückgegebene boolesche Array zu invertieren:

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

Wie im Kommentar von Wes McKinney angegeben, können Sie auch verwenden

s[~s.isin(x)]
62
bmu

Sie haben viele Möglichkeiten. Wenn Sie einige der obigen Antworten und die akzeptierte Antwort aus diesem Beitrag zusammenstellen, haben Sie folgende Möglichkeiten:
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"]))]

Hinweis: Für Option 4 müssen Sie import numpy as np

59
Jonny Brooks

Sie müssen lediglich eine Teilmenge Ihres Datenrahmens erstellen, in der die isin-Methode False ergibt:

df = df[df['Column Name'].isin(['Value']) == False]
12
atm

Du kannst den ... benutzen DataFrame.select Methode:

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
4
Andy Hayden