我已经浏览了各种网站和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
,我必须抓住它们indexes
和drop
。如果不使用indexes
,还有其他方法吗?
答案 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