2024-04-25 22:24:08 发布
网友
假设我有一个由几列组成的数据帧。我想选择dataframe的子集,其中所有的列都在两个值min和max之间。你知道吗
min
max
如何使用^{}实现这一点?是否需要在表达式中逐个指定每个列名,例如:
df.query('(A<{max} & A>{min}) & (B{min} & B{max}) & (C{min} & C{max})'.format(min,max))
除了询问,我还有什么别的选择?可能是直接满足条件的索引?你知道吗
对于您的用例,我将采用非查询方式,构造一个布尔框架,然后调用.all方法:
.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
我认为手动构建扩展的query的优势是不值得的。你知道吗
query
我不知道你为什么认为你需要这里。但如果你想这样做,你可以。您已经在用format语句动态地构建查询字符串;您只需要通过加入一个理解语句,使它变得更动态。例如:
format
qs = ' & '.join('{col}<{max} & {col}>{min}'.format(col, min, max) for col in df.columns) df.query(qs)
我个人会按照@DSM建议的方式来做。除非您出于某种原因确实需要查询字符串(也许是为了打印出来?),而不是构建表达式,通常是错误的答案。你知道吗
对于您的用例,我将采用非查询方式,构造一个布尔框架,然后调用
.all
方法:我认为手动构建扩展的
query
的优势是不值得的。你知道吗我不知道你为什么认为你需要这里。但如果你想这样做,你可以。您已经在用
format
语句动态地构建查询字符串;您只需要通过加入一个理解语句,使它变得更动态。例如:我个人会按照@DSM建议的方式来做。除非您出于某种原因确实需要查询字符串(也许是为了打印出来?),而不是构建表达式,通常是错误的答案。你知道吗
相关问题 更多 >
编程相关推荐