通过选择行来更新pytable

时间:2014-03-12 06:58:21

标签: python pytables

再次,我需要有PyTables经验的人的帮助......

我有一个PyTable(.h5文件),我必须以非常棘手的方式更新它的行...我解释......

该表看起来或多或少像这样

Day  attempt   ok

1      1      1

1      2      0

1      3      1

2      1      1

2      2      1

2      3      1

3      1      1

3      2      1

3      3      0

正如您所看到的,每天有3次尝试,尝试的结果只能是0或1。

这样做的主要思想是,如果任何一天的尝试失败(= 0),那么当天的所有尝试都必须被视为失败(= 0)

在特定情况下,生成的PyTable在处理后看起来像:

Day  attempt   ok

1      1      0

1      2      0 #this was 0, then all 0 for day1

1      3      0

2      1      1

2      2      1

2      3      1

3      1      0

3      2      0

3      3      0#this was 0, then all 0 for day 3

我的问题是,我可以在某一天发现任何0,但我不知道如何向上或向下移动行以将该特定日期中的任何一行更改为0。

1 个答案:

答案 0 :(得分:0)

您可以获取与一天相对应的所有行的行坐标。然后检查是否有任何尝试没有成功并替换表中的结果。

for day_number in range(3):
    coords=table.get_where_list('day==%i'%day_number)
    table_data=table.read_coordinates(coords)
    attempts_succeeded=np.all(table_data['ok'])
    table_data['ok'][:]=attempts_succeeded
    table.modify_coordinates(coords,table_data)

这可能不是最有效的方式,但它应该有效。