2017-03-26 22 views
0

私は使用文字列変数

df.loc[(origFull['abc'] == 111)] 

を使用している場合、それは当然のことながら動作します。

はその後

test = '(origFull[\'abc\'] == 111)' 

df.loc[@test] 

または

df.loc['@test'] 

どちらも働きました。

答えて

1

いくつかのことが間違っている:

1:あなたは、テスト値(正確にはブール値)になりたいです、それらの周りに一重引用符を追加すると、testは文字列になります。代わりに、次の操作を行います。

test = origFull['abc'] == 111 

2:@記号は、それがデコレータのために使われている時に除外、pythonのための有効な構文ではありません。 testを変数として使用するには、@を付けずにtestと書いてください。

df.loc[test] 
+0

実際、私はテスト変数を使って文を表現したいのですが、正しいですが、一重引用符を追加する必要はありません。ありがとうございました! – Windtalker

1

テストを定義するときに引用符を外してください。

locの内部では、本質的にブール変数を作成しています。だからブール値に等しいテストを設定し、ブール指標としてそれを使用します。

test = (origFull['abc'] == 111) 

df.loc[test] 
+0

バックスラッシュを外しても機能します。最初にこの質問に答えてくれて、私を正しい方向に導いてくれてありがとう、ありがとう! – Windtalker

+0

はい、申し訳ありませんが、コピーして貼り付けてバックスラッシュを見逃しました。 – Reen

0

.query()の方法をお探しですか?

test = "abc == 111" 
df.query(test) 
+0

実際には.locですが、私は答えを得ました。とにかくありがとう – Windtalker

関連する問題