Перестановка колонн после группового в пандах - PullRequest
0 голосов
/ 31 октября 2018

Я создал DataFrame следующим образом:

df_example= pd.DataFrame({ 'A': [1,1,6,6,6,3,4,4],
                    'val_A': [3,4,1,1,2,1,1,1],
                    'val_B': [4,5,2,2,3,2,2,2],
                    'val_A_frac':[0.25,0.25,0.3,0.7,0.2,0.1,0.4,0.5],
                    'val_B_frac':[0.75,0.65,0,0.3,np.NaN,np.NaN,np.NaN,np.NaN]
                    }, columns= ['A','val_A','val_B','val_A_frac','val_B_frac'])

Затем я выполнил групповую операцию на A для суммирования по val_A и val_B:

sum_df_ex = df_example.groupby(['A','val_A','val_B']).agg({'val_A_frac':'sum', 'val_B_frac':'sum'})

Я получил это DF: sum_df_ex

Out[67]: 
               val_A_frac  val_B_frac
A val_A val_B                        
1 3     4            0.25        0.75
  4     5            0.25        0.65
3 1     2            0.10        0.00
4 1     2            0.90        0.00
6 1     2            1.00        0.30
  2     3            0.20        0.00

Групповые операции приводят к двум столбцам:

sum_df_ex.columns
Out[68]: Index(['val_A_frac', 'val_B_frac'], dtype='object')

Я хочу создать df после операции groupby, состоящей из всех столбцов, которые отображаются после groupby, например:

Out[67]: 

A val_A val_B   val_A_frac     val_B_frac                
1 3     4            0.25        0.75
  4     5            0.25        0.65
3 1     2            0.10        0.00
4 1     2            0.90        0.00
6 1     2            1.00        0.30
  2     3            0.20        0.00

Как это сделать?

1 Ответ

0 голосов
/ 31 октября 2018

использование reset_index()

sum_df_ex = df_example.groupby(['A','val_A','val_B']).agg({'val_A_frac':'sum', 'val_B_frac':'sum'}).reset_index()

Выход:

   A  val_A  val_B  val_B_frac  val_A_frac
0  1      3      4        0.75        0.25
1  1      4      5        0.65        0.25
2  3      1      2         NaN        0.10
3  4      1      2         NaN        0.90
4  6      1      2        0.30        1.00
5  6      2      3         NaN        0.20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...