2016-08-14 75 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 
相關問題