2017-03-26 93 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