Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对数据帧中某些列和行的数据求和?_Python_Arrays_Pandas_Numpy_Dataframe - Fatal编程技术网

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

Python 如何对数据帧中某些列和行的数据求和?,python,arrays,pandas,numpy,dataframe,Python,Arrays,Pandas,Numpy,Dataframe,我有一堆矩阵存储在一个大数据框中。假设这是我的数据帧 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,

我有一堆矩阵存储在一个大数据框中。假设这是我的数据帧

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))
每个
数据['iteration']
本身就是一个矩阵。如你所见,这里有5个矩阵(迭代-0到4)。我想把它们全部加起来,就像在基本矩阵加法中一样,得到一个矩阵

我试过以下方法,但有点不对劲。它不起作用

matrix = data[['1','2','3','4','5']]
print(np.sum([matrix[matrix_list['iteration']==i] for i in range(0,9)], axis=0))
如何正确地执行此操作?

您可以使用:

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()


谢谢,它起作用了。你能解释一下吗?为什么要在那里使用
drop_duplicates()
?@AnnaRG
d.index.drop_duplicates().values
那部分基本上是
范围(5)
,在
d.index
中有许多重复的值。这与
数据[['iteration']]基本相同。nunique()
?您从
迭代中获得唯一值
?@AnnaRG No,
nunique()
是计算唯一值,
drop\u duplicates()
是给出所有唯一值。很抱歉再次询问,为什么
[1]
?具体是什么意思?
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]])