Суммирование столбцов в Dataframe с соответствующими заголовками столбцов - PullRequest
1 голос
/ 29 июня 2019

У меня есть фрейм данных, который в настоящее время выглядит примерно так:

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

За исключением того, что вместо четырех столбцов есть приблизительно 1000 столбцов, от M1 до ~ M340 (есть несколько столбцов с одинаковымзаголовки).Я хотел суммировать значения, связанные с соответствующими столбцами на основе их индекса.В идеале результирующий фрейм данных должен выглядеть следующим образом:

            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 других соответствующих столбцов).

1 Ответ

3 голосов
/ 29 июня 2019

Возможно, вы захотите 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...