在Python数据帧函数中使用字符串变量

时间:2017-03-26 00:31:12

标签: python pandas

如果我使用

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

它当然会奏效。

然后

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

df.loc[@test]

df.loc['@test']

都没有奏效。

3 个答案:

答案 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)