9

我想知道如何从熊猫系列中排除一个或多个项目。例如:

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]

有没有更好的方法来做到这一点?

谢谢。

4

1 回答 1

14

您可以使用索引isin方法:

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

使用 invert 运算符取反(所以它现在读作“not in”):

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
于 2013-07-09T23:17:20.670 回答