对数据帧中具有匹配列标题的列求和

2024-04-27 00:33:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,目前看起来有点像这样。你知道吗

import pandas as pd
In [161]: pd.DataFrame(np.c_[s,t],columns = ["M1","M2","M1","M2"])
Out[161]: 
            M1    M2    M1    M2
      6/7    1     2     3     5
      6/8    2     4     7     8
      6/9    3     6     9     9
      6/10   4     8     8    10
      6/11   5    10    20    40

除此之外,从M1到M340,大约有1000列,而不是只有4列(有多个列具有相同的标题)。我想根据匹配列的索引对与之关联的值求和。理想情况下,结果数据帧如下所示:

            M1_sum   M2_sum    
      6/7     4        7   
      6/8     9        12  
      6/9    12        15   
      6/10   12        18        
      6/11   25        50      

我想以某种方式应用“groupby”和“sum”函数,但不确定在处理具有多个列且某些列与其他3个列匹配,而另一个列可能只有一个其他列匹配(甚至0个其他列匹配)的数据帧时如何做到这一点。你知道吗


Tags: columns数据inimport标题dataframepandasas
1条回答
网友
1楼 · 发布于 2024-04-27 00:33:52

您可能希望groupby第一个级别,然后在第二个轴上执行.sum(),如:

>>> df.groupby(level=0,axis=1).sum().add_suffix('_sum')
   M1_sum  M2_sum
0       4       7
1       9      12
2      12      15
3      12      18
4      25      50

如果我们将最后一列重命名为M1,它将再次正确分组:

>>> df
   M1  M2  M1  M1
0   1   2   3   5
1   2   4   7   8
2   3   6   9   9
3   4   8   8  10
4   5  10  20  40
>>> df.groupby(level=0,axis=1).sum().add_suffix('_sum')
   M1_sum  M2_sum
0       9       2
1      17       4
2      21       6
3      22       8
4      65      10

相关问题 更多 >