2016-08-14 51 views
0

我需要从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(“球”),其也能正常工作。

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

我认为这是行不通的,因为在我的数据帧中返回的值不是array([ True, False ... , True], dtype=bool),而是Index([True, False ... , True], dtype='object', length = 667)

我该如何重新配置​​我的代码才能运行?

我不粘贴我的数据框,因为即时通讯从一个大的Excel表读取它。

谢谢!

+0

,有可能成为'性指数(真,假......,真],D类= '对象',长度= 667)'如果指定'df.index = df.index.str.contains( '球')'。你不需要那样做。 'df [df.index.str.contains('ball')]'工作得很好。 – ayhan

回答

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 
相关问题