Pandas从dataframe.loc获取索引列表

时间:2016-10-15 14:06:42

标签: python python-2.7 pandas

我已经浏览了各种网站和SO帖子。看起来容易但不知何故我坚持这个。我正在使用

print frame.loc[(frame['RR'].str.contains("^[^123]", na=False)), 'RR'].isin(series1.str.slice(1))

获取

3     True
4    False
8    False
Name: RR, dtype: bool

现在,不知怎的,我只想要indexes,以便我可以在dataframe.drop中使用它。基本上所有索引的值都是True,我必须抓住它们indexesdrop。如果不使用indexes,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

您正在同一列测试两个条件,因此可以组合(和否定):

frame[~((frame['RR'].str.contains("^[^123]", na=False)) & (frame['RR'].isin(series1.str.slice(1))))]

这里,在~运算符之后,它检查特定行是否满足两个条件 - 与最后得到的布尔数组相同。使用~,您将True变为False,将False变为True。最后,frame[condition]返回满足最终条件的行,并使用布尔索引。

以更易阅读的格式:

condition1 = frame['RR'].str.contains("^[^123]", na=False)
condition2 = frame['RR'].isin(series1.str.slice(1))
frame[~(condition1 & condition2)]

作为替代方案(需要0.18.0),您可以使用以下方法获取True元素的索引:

frame.loc[(frame['RR'].str.contains("^[^123]", na=False)), 'RR'].isin(series1.str.slice(1))[lambda df: df].index