【问题标题】:Pytables select rows based on a list of matched column valuesPytables 根据匹配的列值列表选择行
【发布时间】:2017-01-02 09:06:39
【问题描述】:

我想通过与离散值列表匹配的列在 HDF5 文件中进行选择。但是,据说我的查询包含几十个值和可能几个不同的键列,所以我不想使用内核超长查询,例如:

((key1=="value1")|(key1=="value2")) & ((key2=="value3")|(key1=="value4"))

但是,出于速度考虑,它仍然必须以某种方式在内核中完成(我还在索引列并保持我的大表排序)。这是一些帮助代码,我在其中匹配一个值:

import string
import random
import tables as pt


class KeyValue(pt.IsDescription):
    key = pt.StringCol(itemsize=30, dflt=" ", pos=0)
    value = pt.UInt16Col(dflt=0, pos=1)


file = pt.open_file("test.hdf5", "w", title=title)
m = file.create_table("/", "test", KeyValue)

for j in range(20):
    values = []
    for i in range(100000):
        key = "".join(random.sample(string.ascii_uppercase, 5))
        value = random.randint(0, 1000000)
        values.append((key, value))
    m.append(values)

rows = file.root.test.read_where('key == b"AAAA"')
file.close()

【问题讨论】:

    标签: python hdf5 pytables


    【解决方案1】:

    假设您有一个要选择的值的列表,您可以使用字符串连接生成查询字符串:

    "&".join(["(key={0})".format(value) for value in values])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 2022-10-16
      • 1970-01-01
      • 2018-01-20
      相关资源
      最近更新 更多