【发布时间】:2021-06-03 15:05:33
【问题描述】:
我有一个行列表,有两个键列和 6 个值
列。
我想计算总和、平均值和最大值
基于每个函数的列列表的值列,
按键列分组,使用itertools.groupby,
不使用熊猫。
columns = [ID, date, row1, row2, row3, row4, row5, row6]
rows = [[1, date1, 1, 1, 1, 0, 0, 1],
[1, date1, 1, 2, 0, 1, 0, 1],
[2, date1, 1, 3, 0, 0, 1, 1],
[2, date1, 1, 3, 0, 0, 2, 1]]
ColSum = [row2, row6]
ColMean = [row1, row3]
ColMax = [row4, row5]
我期望计算的结果:
rows_result = [[1, date1, 1, 3, 0.5, 1, 0, 2],
[2, date1, 1, 6, 0, 0, 2, 2]]
我的代码:
for cols in ColSum:
index = int(np.where(columns == cols)[0][0])
for k, g in itertools.groupby(rows[:, index], operator.itemgetter(0,1)):
res.append((list(k) +list(map(sum, zip(*[c[2:] for c in g])))))
for colm in colMean:
index = int(np.where(columns == colm)[0][0])
for k, g in itertools.groupby(rows[:, index], operator.itemgetter(0,1)):
res.append((list(k) +list(map(sum, zip(*[c[2:] for c in g])))))
但是,这不起作用。
【问题讨论】:
-
不确定你想要什么,例如
ColSum = [row2, row6].
标签: python list numpy group-by itertools