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