Python Numpy:有条件地添加行的特定列
对于给定的numpy数组:Python Numpy:有条件地添加行的特定列,python,arrays,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]] 我已经检查了多个答案
[[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]]
我已经检查了多个答案,包括 您正在查找列子集上的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()
忽略此列是整数吗?还是字符串?@user3483203在本例中是整数。这会改变解决方案吗?很明显,否则在创建数组时,numpy会将所有内容转换为字符串。聚合中的2:“first”
的目的是什么?@DaveIdito您想忽略该列,所以我通过从每个组中获取第一个值来忽略它。
print(out)
[[1, 1, 'IGNORE_THIS_COL', 201], [1, 2, 'IGNORE_THIS_COL', 100]]