Как найти местоположение индекса для списка переменных? - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в питоне. У меня есть датафрейм df_A, и я хочу выяснить, где Col1 в df_A соответствует любой переменной в list_B, а затем удалить эти строки. то есть удалите строки 0, 2 и 4 в следующем примере. Каковы возможные пути достижения этого? Большое спасибо.

df_A = pd.DataFrame({'Col1': ['AA', 'BB', 'CC', 'DD', 'AA'], 'Col2': [1, 2, 3, 4, 5]})
list_B = ('AA','CC')

1 Ответ

0 голосов
/ 01 июля 2018

Используйте isin для логической маски и фильтра по boolean indexing с df_A.index:

idx = df_A.index[df_A['Col1'].isin(list_B)]
print (idx)
Int64Index([0, 2, 4], dtype='int64')

При необходимости list:

idx = df_A.index[df_A['Col1'].isin(list_B)].tolist()
print (idx)
[0, 2, 4]

Деталь

print (df_A['Col1'].isin(list_B))
0     True
1    False
2     True
3    False
4     True
Name: Col1, dtype: bool

Для фильтрации всех строк по списку:

df1 = df_A[df_A['Col1'].isin(list_B)]
print (df1)
  Col1  Col2
0   AA     1
2   CC     3
4   AA     5

А для фильтрации значений по списку инвертируйте логическую маску по ~:

df2 = df_A[~df_A['Col1'].isin(list_B)]
print (df2)
  Col1  Col2
1   BB     2
3   DD     4

Деталь

print (~df_A['Col1'].isin(list_B))
0    False
1     True
2    False
3     True
4    False
Name: Col1, dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...