列表中的 itertool 组动态元素 python

itertool group dynamic element in list python

我有一个包含多列的列表列表:

column = [id, date,col1, col2...coln]
list_OfRows = [[1,date1, 10,20 ...23],
              [1,date1, 1,10 ...33],
              [2,date2, 3,7...8],
              [2,date2, 21,9...23],
              [2,date3, 10,56 ...20],
              [2,date4, 10,20 ...42]]

我想按 id 和日期分组,并在列上求和 WITHOUT USING PANDAS

RESULT = [[1,date1, 11,30 ...56],
         [2,date2, 24,16...31],
         [2,date3, 10,20 ...20],
         [2,date4, 10,20 ...42]]

你可以这样做:

from itertools import groupby


list_OfRows.sort(key=lambda x: x[:2])
res = []
for k, g in groupby(list_OfRows, key=lambda x: x[:2]):
    res.append(k + list(map(sum, zip(*[c[2:] for c in g]))))

产生:

[[1, 'date1', 11, 30, 56], 
 [2, 'date2', 24, 16, 31], 
 [2, 'date3', 10, 56, 20], 
 [2, 'date4', 10, 20, 42]]