gpt4 book ai didi

python - 在pandas中groupby之后重新排列列

转载 作者:行者123 更新时间:2023-12-01 08:51:29 29 4
gpt4 key购买 nike

我创建了一个像这样的数据框:

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

如何做到这一点?

最佳答案

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

关于python - 在pandas中groupby之后重新排列列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53085683/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com