很抱歉,如果标题设置不正确。 问题是我想通过将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
请建议我应该遵循的道路。 谢谢!
答案 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]'
发送到查询