python - Numpy:有条件地添加行的特定列

标签 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

最佳答案

您正在寻找列子集上的 groupby。使用 numpy 实现这是一个挑战,但使用 pandas 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]]

关于python - Numpy:有条件地添加行的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51117943/

相关文章:

python - 在 for 循环中加速性能重写数组

python - 使用 Python 加速并行读取大文件

python - 如何使用python提取文本,其中包含链接和链接后的文本以及br后的另一个文本

javascript - 在 V8 中使用数组(性能问题)

C 结构中的两个数组

python - 使用 numpy.distutils.core.setup 之前安装 numpy

python - pandas - 在 DataFrame 中搜索字符

python - 如何在 django 中进行管理操作来下载用户的 pdf 文件

java - 错误 : Generic Array Creation

python - 规范化来自各种 "image"对象的 numpy 数组