2016-06-16 23 views
2

私は、次のデータフレームがあります。pandas.dataframe.queryでパターン検索()

---------------------------- 
Index| col1 | col2 | 
---------------------------- 
0 | 1 | a-b-c 

1 | 2 | d-e-f 

2 | 3 | g 
---------------------------- 

を私はのようなクエリを作成できるようにしたい:

myvar= 'a' 
df.query('@myvar in col2') 

しかし、それは常に完全一致のために働きます。パターンマッチの解決策はありますか?

おかげで、

+0

'.query()'を使ってはできません。あなたの '@ myvar'を文字列全体と比較します。' myvar = "g" 'をセットして、あなたのクエリを再実行してみましょう。' index == 2'を返します。 – MaxU

+0

Hi Max Pythonの正規表現は.query()で動作するのですか、それとも.query()関数で動作させるための他のソリューションがありますか? – Rtut

答えて

0

Rtutこれは動作するはずです:

df = pd.DataFrame([[1, 'a-b-c'], [2, 'd-e-f'], [3, 'g']], columns=['col1', 'col2']) 

myvar = 'a' 

df.loc[df.col2.str.contains(myvar)] 

    col1 col2 
0  1 a-b-c 
+0

なぜquery()関数にこの制限がありますか?私はあなたのクエリ文字列がユーザによって動的に生成されるので、あなたが提案した方法を使用することはできません。 – Rtut

0

私は(あなたが.query使用してそれを行うことはできません怖いです)。あなたの@myvarを文字列全体と比較します - myvar = "g"を設定してクエリを再実行しようとすると、index == 2の行が返されます。

AFAIK、正規表現aren't supported in DataFrame .queryも同様です。

関連する問題