Подтвердить что ты не робот

Удалить строки не .isin('X')

Извините, что просто попал в Pandas, похоже, что это должен быть очень прямой вопрос. Как я могу использовать isin('X') для удаления строк, которые находятся в списке X? В R я написал бы !which(a %in% b).

4b9b3361

Ответ 1

Вы можете использовать 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

Как указано в комментарии Уэса МакКинни, вы также можете использовать

s[~s.isin(x)]

Ответ 2

У вас много вариантов. Сопоставив некоторые из ответов выше и принятый ответ из этого сообщения, вы можете:
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

Ответ 3

Все, что вам нужно сделать, это создать подмножество вашего фрейма данных, где метод isin равен False:

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

Ответ 4

Вы можете использовать метод 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