如何对数据框中某些列和行的数据求和?

时间:2018-05-21 16:05:25

标签: python arrays pandas numpy dataframe

我有一堆矩阵存储在一个大数据帧中。我们这里说的是我的数据框架。

c = cell(size(uRows,1), 2);
for ii = 1:size(uRows,1)
    c{ii,1} = uRows(ii,:);         % This row
    c{ii,2} = find( iRows == ii ); % Indices of this row value within 'arr'
end

每个data = pd.DataFrame([[13, 1, 3, 4, 0, 0], [0, 2, 6, 2, 0, 0], [3, 1, 5, 2, 2, 0], [0, 0, 10, 11, 6, 0], [5, 5, 21, 25, 41, 0], [11, 1, 3, 2, 0, 1], [3, 1, 7, 3, 1, 1], [1, 1, 6, 5, 3, 1], [1, 1, 6, 7, 6, 1], [6, 6, 21, 24, 42, 1], [17, 1, 7, 0, 0, 2], [1, 1, 6, 1, 1, 2], [2, 4, 6, 2, 1, 2], [0, 2, 11, 7, 8, 2], [5, 6, 17, 16, 46, 2], [11, 1, 10, 2, 1, 3], [2, 2, 7, 1, 1, 3], [0, 0, 14, 4, 1, 3], [0, 0, 7, 7, 5, 3], [5, 1, 20, 18, 48, 3], [16, 3, 7, 1, 2, 4], [1, 2, 4, 1, 0, 4], [2, 4, 7, 5, 3, 4], [3, 0, 4, 4, 7, 4], [7, 2, 13, 12, 58, 4]], columns=['1', '2', '3', '4', '5', 'iteration']) print(pd.DataFrame(data)) 都是一个矩阵。所以,正如你所看到的,这里有5个矩阵(迭代-0到4)。我想将它们全部添加,比如在基本矩阵添加中,以获得单个矩阵。

我尝试了以下内容,但它有问题。它没有用。

data['iteration']

我该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以使用:

In [98]: d = data.set_index('iteration')

In [99]: np.sum(d.loc[i].values for i in d.index.drop_duplicates().values)
Out[99]: 
array([[ 68,   7,  30,   9,   3],
       [  7,   8,  30,   8,   3],
       [  8,  10,  38,  18,  10],
       [  4,   3,  38,  36,  32],
       [ 28,  20,  92,  95, 235]])

或者,使用groupby()

np.sum(e[1].iloc[:, :-1].values for e in data.groupby('iteration'))

array([[ 68,   7,  30,   9,   3],
       [  7,   8,  30,   8,   3],
       [  8,  10,  38,  18,  10],
       [  4,   3,  38,  36,  32],
       [ 28,  20,  92,  95, 235]])