Исключить один или несколько элементов из серии 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