Исключить один или несколько элементов из серии pandas

мне интересно, как исключить один или несколько товаров из серии панд. Например:

s = pd.Series(data=range(10), index=[chr(ord('A') + x) for x in range(10)])

теперь я хочу исключить строки B, D, E

крайне неэффективный способ сделать это:

index = s.index
for col in ['B','D','E']:
    index = index.delete(index.get_loc(col))

new_series = s[index]

есть ли лучший способ сделать это?

спасибо.

1 ответов


вы можете использовать индекс isin способ:

In [11]: s.index.isin(list('BDE'))
Out[11]: array([False,  True, False,  True,  True, False, False, False, False, False], dtype=bool)

negate с помощью оператора invert (поэтому теперь он читает "не в"):

In [12]: ~s.index.isin(list('BDE'))
Out[12]: array([ True, False,  True, False, False,  True,  True,  True,  True,  True], dtype=bool)

и используйте это, чтобы замаскировать серию:

In [13]: s = s[~s.index.isin(list('BDE'))]

In [14]: s
Out[14]:
A    0
C    2
F    5
G    6
H    7
I    8
J    9
dtype: int64