web-dev-qa-db-ja.com

.isin( 'X')ではない行を削除します

パンダに入って申し訳ありませんが、これは非常に簡単な質問のように思えます。 isin('X')を使用して、中にあるリストXである行を削除するにはどうすればよいですか? Rでは、!which(a %in% b)と記述します。

51
DrewH

numpy.logical_not は、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

Wes McKinneyのコメントにあるように

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

多くのオプションがあります。上記の回答のいくつかと この投稿から受け入れられた回答 を照合すると、次のことができます:
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"]))]

注:オプション4の場合、import numpy as np

59
Jonny Brooks

必要なのは、isinメソッドがFalseと評価されるデータフレームのサブセットを作成することだけです。

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

DataFrame.select メソッド:

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