Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用查询选择所有列满足条件的位置_Python_Pandas_Numexpr - Fatal编程技术网

Python 使用查询选择所有列满足条件的位置

Python 使用查询选择所有列满足条件的位置,python,pandas,numexpr,Python,Pandas,Numexpr,假设我有一个由几列组成的熊猫数据框。我想选择数据帧的子集,其中所有列都在两个值min和max之间 我怎样才能用它来做这件事?是否需要在表达式中逐个指定每个列名,例如: df.query('(A<{max} & A>{min}) & (B{min} & B{max}) & (C{min} & C{max})'.format(min,max)) df.query(‘(A{min})&(B{min}&B{max})&(C{min}&C{max})’

假设我有一个由几列组成的熊猫数据框。我想选择数据帧的子集,其中所有列都在两个值
min
max
之间

我怎样才能用它来做这件事?是否需要在表达式中逐个指定每个列名,例如:

df.query('(A<{max} & A>{min}) & (B{min} & B{max}) & (C{min} & C{max})'.format(min,max))
df.query(‘(A{min})&(B{min}&B{max})&(C{min}&C{max})’.format(min,max))

除了查询,我还有什么其他选择?可能是在直接满足条件的索引中工作?

我不确定您为什么认为需要在这里进行
query
。但是如果你想这样做,你可以。您已经在使用该
format
语句动态构建查询字符串;你只需要加入一个团队,让它更有活力。例如:

qs = ' & '.join('{col}<{max} & {col}>{min}'.format(col, min, max)
                for col in df.columns)
df.query(qs)
qs='&'.join('{col}{min}'。格式(col,min,max)
对于df.列中的列)
测向查询(qs)

我个人会按照@DSM建议的方式来做。除非您出于某种原因确实需要查询字符串(可能是打印出来的?),否则构建字符串以将其作为表达式进行求值,而不是构建表达式,通常是错误的答案。

对于您的用例,我会采用非查询方式,构建一个布尔框架,然后调用
。all
方法:

>>> minval, maxval = 20, 80
>>> df = pd.DataFrame(np.random.randint(0, 100, (20,6)))
>>> df[((df > minval) & (df < maxval)).all(axis=1)]
     0   1   2   3   4   5
2   74  30  30  76  31  66
10  49  39  71  43  30  50
>最小值,最大值=20,80
>>>df=pd.DataFrame(np.random.randint(01100,(20,6)))
>>>df[((df>minval)和(df

我认为手动构造扩展的
查询的好处不值得。

因为你的问题很有价值,答案必须非常模糊。向我们展示使用
query
一个接一个地指定每个列名(以及使用示例数据)您将要编写的内容,希望有人能向您展示如何编写它而不必这样做。