传递我学到的信息的新应用,这是另一个问题的一部分: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作为局部变量。然而,代码仍然返回错误。
2条答案
按热度按时间uqxowvwt1#
感谢用户@choldgraf。我使用了他在另一篇文章(Unable to query a local variable in pandas 0.14.0)中提到的技术,不是针对列中的值,而是针对列名。
变量可以在pandas查询中用作列名,方法是将其插入到查询字符串中,如下所示:
(其中反引号用于括住列名,处理列名中的特殊字符和空格。)
rt4zxlrg2#
@TempleGuard527的答案很完美。这个答案只是
python3.6
中f-string
s的补充。现在,你可以这样做: