在大熊猫分组之后重新排列列

时间:2018-10-31 14:25:35

标签: python pandas

我创建了一个像这样的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上执行了一个groupby操作以求和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

Groupby操作导致两列:

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

我要在groupby操作之后创建一个df,该操作由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 :(得分:1)

使用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