Pandas查询变量作为列名

时间:2018-04-11 17:56:04

标签: python pandas

传递我学到的新信息应用,这是另一个问题的一部分:Unable to query a local variable in pandas 0.14.0

感谢并感谢用户@choldgraf。我以不同方式应用上述链接中的答案。

目标:在查询中使用变量作为列名

失败的例子:

import pandas as pd
fooframe = pd.DataFrame({'Size':['Large', 'Medium', 'Small', 'Tiny'], 'Color':[1, 2, 3, 4]})
myvar = 'Size'
subframe = fooframe.query("myvar == 'Large'")

上面的代码会为' myvar'。

返回一个关键错误
import pandas as pd
fooframe = pd.DataFrame({'Size':['Large', 'Medium', 'Small', 'Tiny'], 'Color':[1, 2, 3, 4]})
myvar = 'Size'
subframe = fooframe.query("@myvar == 'Large'")

上面的代码添加" @"在查询中myvar之前引用myvar作为局部变量。但是,代码仍会返回错误。

1 个答案:

答案 0 :(得分:3)

感谢并感谢用户@choldgraf。我在另一篇文章(Unable to query a local variable in pandas 0.14.0)中使用了他提到的技术,不是列中的值,而是列名。

变量可以用作pandas查询中的列名,方法是将其插入查询字符串中,如下所示:

import pandas as pd
fooframe = pd.DataFrame({'Size':['Large', 'Medium', 'Small', 'Tiny'], 'Color':[1, 2, 3, 4]})
myvar = 'Size'
subframe = fooframe.query("{0} == 'Large'".format(myvar))