2

我正在使用 PyTables 进行查询(即根据某些条件选择多行),其中包含函数tables.Table.read()tables.Table.read_where(). 这本质上是基于 numpy 和带有 NumExpr 的 pandas:

http://www.pytables.org/usersguide/tutorials.html http://www.pytables.org/cookbook/hints_for_sql_users.html https://github.com/PyTables/PyTables/blob/6782047b9223897fd59ff4967d71d7fdfb474f16/tables/table。 py

在“sql 用户提示”中,一次选择多行的示例是这样的:

rows = tbl.read_where('(sqrt(x**2 + y**2) <= 1) & (temperature < 100)')

假设我更喜欢如下查询:所有等于温度 100 或等于温度 90 的行

rows = tbl.read_where('(temperature == 100) | (temperature == 90)')

这完美地工作。但我想通过“温度值”列表/数组来完成这项任务。

temperatures = [80, 90, 100]
# reads in temperatures
# performs this query: 
rows = tbl.read_where('(temperature == 80) | (temperature == 90) | (temperature == 100)')

这可能吗?我的想法是我会编写一个函数,让用户输入要查询的值列表,并为每个值执行 OR 查询。

4

1 回答 1

2

一种可能的解决方案是expression由以下人员创建list comprehension

temperatures = [80, 90, 100]

cond = '|'.join(['(temperature == ' + str(x) + ')' for x in temperatures])
print (cond)
(temperature == 80)|(temperature == 90)|(temperature == 100)
于 2016-11-03T08:02:02.077 回答