私はPytablesの内部動作に精通していません(したがって、これはあなたが探しているものと一致していない可能性があります)がgroupby
、モジュールの関数はitertools
これらのタイプの状況で非常に役立ちます(以下のソート手順に注意してください-これこの場合groupby
、同じ日付のすべてのアイテムをグループ化するために重要です。詳細については、ここを参照してください。):
In [1]: from itertools import groupby
In [2]: from operator import attrgetter
In [3]: class myData(object):
def __init__(self, date, item):
self.date = date
self.item = item
...:
In [4]: l = [myData('2012-01-01', 'thing'), myData('2012-01-01', 'another thing'), myData('2013-01-01', 'and another')]
In [5]: l_sorted = sorted(l, key=attrgetter('date'))
In [6]: for date, my_objects in groupby(l_sorted, key=attrgetter('date')):
...: print date
...: for obj in my_objects:
...: print obj.item
...:
2012-01-01
thing
another thing
2013-01-01
and another
ここでの基本的なパターンは、グループ化するオブジェクトを保持するリスト/コンテナーを取得することです。次に、後でグループ化する属性(この場合はdate
)に基づいてリストを並べ替えます。次に、その並べ替えられたリストをgroupby
関数に渡します。関数は、各反復で2つの値を出力します。key
これは、グループ化した値を表し(ここではdate
、各グループの値になります)、group
共有するすべてのオブジェクトを含むイテレーターです。その同じdate
キー。item
次に、そのグループを反復処理して、各オブジェクトの属性を引き出すことができます。