Python 从数据帧索引筛选包含字符串模式的行

Python 从数据帧索引筛选包含字符串模式的行,python,pandas,Python,Pandas,我需要从数据帧索引中筛选包含字符串模式的行 我发现了以下示例:其中使用df[df[“col”].str.contains()]对数据帧进行过滤,这在该示例中效果很好 df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']}) 在这个例子中,如果我将列“id”复制到索引中,我可能会使用df.index.str.contains(“ball”),这也很好 但是,当我在数据帧中使用

我需要从数据帧索引中筛选包含字符串模式的行

我发现了以下示例:其中使用df[df[“col”].str.contains()]对数据帧进行过滤,这在该示例中效果很好

df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})
在这个例子中,如果我将列“id”复制到索引中,我可能会使用df.index.str.contains(“ball”),这也很好

但是,当我在数据帧中使用df.index.str.contains(“示例”)时,它不起作用

我认为它不起作用,因为在我的数据帧中,返回的值不是
数组([True,False…,True],dtype=bool)
,而是
索引([True,False…,True],dtype='object',length=667)

如何重新编写代码以使其正常工作

我不粘贴我的数据框,因为我是从一个大的excel表格中读取它的


谢谢大家!

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

# 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
如果分配
df.Index=df.Index.str.contains('ball'),它可能会变成
Index([True,False…,True],dtype='object',length=667)
。你不需要那样做
df[df.index.str.contains('ball')]
工作正常。