2017-03-26 94 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:@符號不是蟒蛇有效語法,當它用於裝飾除外。要使用測試作爲變量,只需編寫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