如何使用本地数组中的多个变量触发查询

时间:2016-08-23 14:28:11

标签: python pandas

很抱歉,如果标题设置不正确。 问题是我想通过将df的列与数组中的几个值进行比较来过滤DataFrame:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
array = np.arange(10)
#simple query
df.query('A == %d' %array[3])

以上查询运行完全正常,以下查询也运行没有问题:

df.query('A == [3,4,5]')

逻辑上,下面的代码也应该有用,因为我从array选择第3到第5的值:

df.query('A == %d' %array[3:5])

然而,它给了我一个错误:

TypeError: %d format: a number is required, not numpy.ndarray

请建议我应该遵循的道路。 谢谢!

2 个答案:

答案 0 :(得分:2)

location /portal/v3 { alias /Users/user/portal3; index index.php; location ~ ^/portal/v3/(.+\.php)(/.*)$ { fastcgi_param HTTP_PROXY ""; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$2;#$fastcgi_script_name; include fastcgi_params; } } 不支持切片,因此最接近的是创建一个包含所需数据的变量,然后从查询中引用它(请注意,切片在此处创建原始视图{{1并且不执行副本):

numexpr

答案 1 :(得分:1)

返回一个由%d格式

接受的整数
df.query('A == %d' %array[3])

这会返回一个数组,而不是同一个对象!,被后者拒绝

df.query('A == [%s]' %array[3:5])

我建议:

df.query('A == [%s]' % ",".join([str(a) for a in array[3:6]]))

这会将'A == [3,4,5]'发送到查询