gpt4 book ai didi

python - Pytables。如何迭代唯一值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:31 25 4
gpt4 key购买 nike

我在 Pytables 中有一个数据集,它看起来像

class myData(IsDescription):
date = StringCol(16)
item = Int32Col()

我在同一日期有多个项目,例如:

'2010-01-01', 5
'2010-01-01', 6
'2010-01-02', 7
'2010-01-02', 8

有没有一种方法可以遍历唯一日期,然后遍历日期中的项目?我的意思是像

for date in DATE
print date
for ITEM
print item

最佳答案

我不熟悉 Pytables 的内部工作原理(因此这可能与您正在寻找的不一致),但是 groupby itertools 中的函数模块在这些类型的情况下非常有用(请注意下面的排序步骤 - 在这种情况下这很重要,以便获得 groupby 以相同日期对所有项目进行分组。有关更多信息,请参见 here。):

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函数,它将在每次迭代中发出两个值 - key表示您分组的值(因此这里它将是每个组的 date)和 group包含共享相同 date 的所有对象的迭代器 key 。然后您可以遍历该组,拉出 item每个对象的属性。

关于python - Pytables。如何迭代唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14552169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com