从Pandas数据帧索引中过滤包含字符串模式的行

时间:2016-08-14 14:06:24

标签: python pandas

我需要从Pandas数据帧索引中过滤包含字符串模式的行。

我找到了以下示例:How to filter rows containing a string pattern from a Pandas dataframe其中数据框使用df [df [" col"]。str.contains()]进行过滤,该示例可以正常工作。

df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})

在示例中,如果我复制列" ids"对于索引,我可以使用df.index.str.contains(" ball"),这也可以正常工作。

但是,当我在我的数据帧中使用df.index.str.contains(" Example")时,它不起作用。

我认为它不起作用,因为在我的数据框中,返回的值不是array([ True, False ... , True], dtype=bool),而是Index([True, False ... , True], dtype='object', length = 667)

我如何重新制定代码以使其有效?

我没有粘贴我的数据框,因为我正在从一张大型excel表中读取它。

谢谢!

1 个答案:

答案 0 :(得分:0)

您应该确保索引是一个字符串。以下示例会产生错误。

# Test data
df = DataFrame([1,2,3,4], index=['foo', 'foo1', 'foo2', 1], columns=['value'])
df[df.index.str.contains('foo')]

将索引转换为str允许获得预期结果。

df.index = df.index.astype('str')
df[df.index.str.contains('foo')]

      value
foo       1
foo1      2
foo2      3