2016-08-14 8 views
0

Pandasデータフレームインデックスから文字列パターンを含む行をフィルタリングする必要があります。Pandasデータフレームインデックスからの文字列パターンを含む行のフィルタリング

Iは、以下の例が見つかりました:[DF [ "COL"] str.contains()]データフレームをDF濾過しHow to filter rows containing a string pattern from a Pandas dataframeを例と正常に動作しています。私は、インデックスに列「ID」をコピーした場合の例で

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

は、私はまた、正常に動作しdf.index.str.contains(「ボール」)を、使用することができます。

しかし、データフレームにdf.index.str.contains( "Example")を使用すると、動作しません。

私のデータフレームで返される値はarray([ True, False ... , True], dtype=bool)ではなく、Index([True, False ... , True], dtype='object', length = 667)ではないため、動作しないと思います。

コードをどのように再定式化して動作させることができますか?

大きなエクセルシートから読み込んでいるので、データフレームを貼り付けません。

ありがとうございました!

+0

それは( '・インデックス([FALSE TRUE、...、真]、DTYPE = 'オブジェクト'、長さ= 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 
関連する問題