脾气暴躁:有条件地添加行的特定列

时间:2018-06-30 19:35:06

标签: python arrays numpy

对于给定的numpy数组:

[[1, 1, 'IGNORE_THIS_COL', 100],
 [1, 1, 'IGNORE_THIS_COL', 101],
 [1, 2, 'IGNORE_THIS_COL', 100]]

是否可以对行(和条件列)求和?假设列0是组,列1是用户,那么我想相应地添加第四列。最终的“求和”数组应如下所示。

[[1, 1, 'IGNORE_THIS_COL', 201],
 [1, 2, 'IGNORE_THIS_COL', 100]]

我已经检查了多个答案,包括Numpy: conditional sum

1 个答案:

答案 0 :(得分:1)

您正在寻找一列子集的分组依据。这是使用numpy来实现的挑战,但是对于熊猫groupby则很简单:

import pandas as pd

df = pd.DataFrame(array)
out = df.groupby([0, 1], as_index=False).agg({2:'first', 3:'sum'}).values.tolist()

print(out)
[[1, 1, 'IGNORE_THIS_COL', 201], [1, 2, 'IGNORE_THIS_COL', 100]]