有人知道我如何在itertools.groupby函数按零值和非零值分组数据行?在
举一个简单的例子:
from collections import namedtuple
from operator import attrgetter
from itertools import groupby
FakeRow = namedtuple('FakeRow', ['start_date_time', 'wear_sensor',
'part_number', 'chip_count'])
data = [
FakeRow(1,1,'999-045', 0),
FakeRow(2,1,'999-045', 4),
FakeRow(3,1,'999-045', 3),
FakeRow(3,1,'999-047', 0),
FakeRow(4,1,'999-045', 0),
FakeRow(5,1,'999-047', 1),
]
# need to groupby start date time first
unique_keys = []
groups = []
data = sorted(data, key=attrgetter('start_date_time'))
# want to group by 'chip_count' but by zero and non-zero values
for k, g in groupby(data, key=my_key_func(*args)):
groups.append(list(g))
unique_keys.append(k)
def my_key_func(*args):
'''Help itertools.groupby group by zeros, or group by anything non-zero'''
pass
预期输出为:
^{pr2}$谢谢。在
这应该和查看伪行的chip_count的布尔值一样简单:
在这种情况下,},这可能不是您想要的。您可能希望使用set和
^{pr2}$unique_keys
将是True
或{update
与fakerow.chip_count
一起使用:相关问题 更多 >
编程相关推荐