在pandas系列中获取除一个元素外的所有元素

5

我有一个由字符串索引的pandasSeries,其中包含许多值。 我想获取除一个之外的所有值。

my_series.ix['intercept'] #<--- this has the value I don't want

有没有一种方法可以获取my_series中除了my_series.ix['intercept']返回的内容以外的所有东西?
1个回答

9
您可以构建一个“掩码”——一个布尔数组,其中Series索引等于特定值为True:
mask = my_series.index.isin(['intercept'])

然后你可以像通常选择剩下的行一样进行选择:
my_series.loc[~mask]

请注意,如果该值在索引中出现超过一次,则所有具有相同索引的行将被删除:
my_series = pd.Series([10,20,30,40], index=['foo','intercept','baz','intercept'])
# foo          10
# intercept    20
# baz          30
# intercept    40
# dtype: int64

mask = my_series.index.isin(['intercept'])
print(my_series.loc[~mask])

产出率
foo    10
baz    30
dtype: int64

请简单澄清一下这个问题,它是否会删除那些包含或被包含在该字符串字面量之内的索引?例如,它是否会删除索引为“int”或索引为“intercept_1”的条目?对于我的当前情况,这并不重要,所以我只是出于好奇而提出这个跟进问题。 - sedavidw
1
不会的。但我鼓励你尝试一下,这是学习的最佳方式。请记住,索引可能包含除字符串以外的其他值,因此isin只是检查成员资格(相等性),而不像检查一个字符串是否包含在另一个字符串中那样进行任何特定于字符串的操作。 - unutbu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接