Python 从数据帧索引筛选包含字符串模式的行
我需要从数据帧索引中筛选包含字符串模式的行 我发现了以下示例:其中使用df[df[“col”].str.contains()]对数据帧进行过滤,这在该示例中效果很好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 = 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')]
工作正常。