table_pcoll = ....
def per_column_average(rows, ignore_elms=[ID_INDEX]):
return [sum([row[idx] if idx not in ignore_elms else 0
for row in rows])/len(row[0])
for idx, _ in enumerate(rows[0])]
keyed_averaged_elm = (table_pcoll
| beam.Map(lambda x: (x[ID_INDEX], x))
| beam.GroupByKey()
| beam.Map(lambda x: (x[0], per_column_average(rows))
Извините за неприятную однострочность. Я надеюсь, что это помогает.