2017-07-05 5 views
3

私にはDataFrameがあります。 1列(name)には文字列値があります。私は、DataFrame.query()メソッドを使用して、特定の列に対して部分的な文字列の一致に基づいて行を選択する方法があるかどうか疑問に思っていました。パンダを使用したクエリで部分列で行を選択

私が試した:

  • df.query('name.str.contains("lu")')を。エラーメッセージ: "TypeError: 'Series'オブジェクトは変更可能であり、したがってハッシュできません。
  • df.query('"lu" in name')空のDataFrameを返します。

    import pandas as pd 
    
    df = pd.DataFrame({ 
        'name':['blue','red','blue'], 
        'X1':[96.32,96.01,96.05] 
    }, columns=['name','X1']) 
    
    
    print(df.query('"lu" in name').head()) 
    print(df.query('name.str.contains("lu")').head()) 
    

    私はdf[df['name'].str.contains("lu")]を使用することができます知っているが、私は クエリを使用することを好む:

コードは、私が使用しています。

+2

まだ実装されていないようです:https://github.com/pandas-dev/pandas/issues/8749 – ayhan

+0

@ayhanありがとう。コメントを回答に変換することは大歓迎です。 –

+1

確かに、答えを加えました。編集は大歓迎です。 – ayhan

答えて

2

バージョン0.20.2では、queryは文字列の部分一致をサポートしていません。それについてはopen future requestがあり、コア開発者の一人はそれが素晴らしい追加だと同意しているようです。

関連する問題