Объедините серии панд / DataFrame с многоуровневым индексом и результатом вставки - PullRequest
0 голосов
/ 17 октября 2019

При наличии панды Series (или DataFrame) с многоуровневым индексом:

name          month          
A             2019-05        8
              2019-06        8
              2019-07        3
              2019-08        4
              2019-09        7
B             2019-06       10
              2019-07        5
              2019-08       23
              2019-09       10
              2019-10       13

Как можно агрегировать данные на втором уровне, когда результат вставляется обратно вданные?

Один из примеров агрегирования будет sum, что приведет к:

name          month          
A             sum            30         #added entry for A
              2019-05        8
              2019-06        8
              2019-07        3
              2019-08        4
              2019-09        7
B             sum           61          #added entry for B
              2019-06       10
              2019-07        5
              2019-08       23
              2019-09       10
              2019-10       13

Ответы [ 2 ]

1 голос
/ 17 октября 2019

Вам просто нужно создать новый фрейм данных и указать:

new_df = (df.groupby(level='name')
   .sum()
   .rename(columns={'count':'sum'})
   .stack()
   .to_frame(name='count')
)

pd.concat((new_df,df)).sort_index()

Вывод:

              count
name               
A    2019-05      8
     2019-06      8
     2019-07      3
     2019-08      4
     2019-09      7
     sum         30
B    2019-06     10
     2019-07      5
     2019-08     23
     2019-09     10
     2019-10     13
     sum         61
1 голос
/ 17 октября 2019

Вот один из способов использования unstack

s=df['count'].unstack()
s['sum']=s.sum(1)
s=s.stack()
name  month  
A     2019-05     8.0
      2019-06     8.0
      2019-07     3.0
      2019-08     4.0
      2019-09     7.0
      sum        30.0
B     2019-06    10.0
      2019-07     5.0
      2019-08    23.0
      2019-09    10.0
      2019-10    13.0
      sum        61.0
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...