0
有沒有人有一個想法,我將如何利用itertools.groupby函數中的鍵 func參數將數據行分爲零和非零零值?itertools.groupby key func產生零和非零值的分組
對於一個簡化的例子:
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
所需的輸出將是:
groups == [
[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)]
]
感謝。
非常感謝。我結束了循環:對於groupby(數據,lambda x:bool(x.chip_count))中的k,g,這些工作。它不喜歡*參數。我收到一個錯誤,說args沒有定義。 – PlacidLush 2014-10-20 15:37:42
@PlacidLush - 抱歉,它應該是'key = my_key_func',而不是'key = my_key_func(* args)'。 – mgilson 2014-10-20 15:44:00
不用擔心。這個小小的細微差別幫助我更好地理解發生了什麼。 – PlacidLush 2014-10-20 16:34:07