Python 使用查询函数查询循环中传递的局部变量
我希望能够根据列表中的列名动态查询每个列名。我可以使用@符号在等号的另一侧动态传入,但我确实在尝试动态执行列Python 使用查询函数查询循环中传递的局部变量,python,pandas,Python,Pandas,我希望能够根据列表中的列名动态查询每个列名。我可以使用@符号在等号的另一侧动态传入,但我确实在尝试动态执行列 import pandas as pd import bumpy as np df = pd.DataFrame(np.random.randn(10, 2), columns=list('ab')) df columns = ['a','b'] for each_column in columns: df.query("@each_column > 1") ##
import pandas as pd
import bumpy as np
df = pd.DataFrame(np.random.randn(10, 2), columns=list('ab'))
df
columns = ['a','b']
for each_column in columns:
df.query("@each_column > 1") ## error
IIUC:
动态生成查询:
In [13]: q = ' and '.join('{} > 1'.format(c) for c in df.columns)
In [14]: q
Out[14]: 'a > 1 and b > 1'
In [15]: df.query(q)
Out[15]:
a b
7 1.073948 1.348097
即使我们提供了一个字符串供您查询,也不清楚您想要的是什么。您的代码不会产生任何输出。你想要的结果是什么?不完全是我所看到的,但这给了我解决这个问题所需要的东西。谢谢
In [13]: q = ' and '.join('{} > 1'.format(c) for c in df.columns)
In [14]: q
Out[14]: 'a > 1 and b > 1'
In [15]: df.query(q)
Out[15]:
a b
7 1.073948 1.348097