如果我使用
df.loc[(origFull['abc'] == 111)]
它当然会奏效。
然后
test = '(origFull[\'abc\'] == 111)'
df.loc[@test]
或
df.loc['@test']
都没有奏效。
答案 0 :(得分:1)
定义测试时取消引号。
在loc内部,你实际上是在创建一个布尔变量。因此,将test设置为等于该布尔值并将其用作布尔索引:
test = (origFull['abc'] == 111)
df.loc[test]
答案 1 :(得分:1)
有些事情是错的:
1:您希望test成为一个值(确切地说是一个布尔值),如果您在它们周围添加单引号,test
将变为一个字符串。这样做:
test = origFull['abc'] == 111
2:@
符号不是python的有效语法,除了它用于装饰器时除外。要将test用作变量,只需编写test
而不使用@
。
df.loc[test]
答案 2 :(得分:0)
也许您正在寻找.query()
方法?
test = "abc == 111"
df.query(test)