我尝试基于多个条件选择行,这些条件不能用[pytables允许的]条件语句轻松表示 (http://pytables.github.io/usersguide/condition_syntax.html)。你知道吗
我也不想把一个很长的字符串格式化为一个条件参数,因为这看起来很麻烦。你知道吗
所以我试图收集数组中的行,希望可以对行进行额外的选择
my_list1 = ['a', 'b', 'c']
my_list2 = ['5', '6', '7']
rows_selected = []
for an_item in my_list1:
for row in table_all.where("letters == an_item"):
for another_item in my_list2:
if row['numbers'] == another_item:
print row
rows_selected.append(row)
这种类型的设置会起作用(虽然不是很优雅)。但问题是,在rows_selected
中收集的所有行都失去了它们的标识,成为最后一个指定的行。我基本上是以重复的行结束的。你知道吗
有没有一种优雅的方法可以使用列表成员身份作为pytables的选择标准?或者我如何避免重复行的问题,并确保在循环中收集的行保持唯一?你知道吗
你不能只在条件语句中使用
an_item
。它不会随着循环而改变。我很惊讶你竟然把什么都弄出来了table_all.where("letters == an_item")
应该是
table_all.where("letters == %s" % an_item)
你为什么不试试
row_selected = [ table_all.readWhere("(letters == %s) & (numbers == %s)" % (l, n) ) for l in my_list1 for n in my_list2 ]
这应该比你那里的要快得多,而且要优雅得多
相关问题 更多 >
编程相关推荐