对于给定的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。
答案 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]]