Pandas小计类似于Excel



我有以下数据框df:

A   B      C
0    21  Blue   100 
1    33  Yellow 100 
2    17  White  250 
3    A2  Grey   40
4    65  Green  500 
5    33  Red    80 
6    17  Purple -50
7    A2  Orange 600

B列基本上是与代码本身无关的信息,但仍然需要包含在输出中。我已经按列A对数据框进行了排序,并解决了cola包含int和str的问题:

df['A'] = df['A'].astype(str)
df_sorted = df.sort_values(by=['A'])

现在df_sorted是这样的

A   B      C
2    17  White  250
6    17  Purple -50
0    21  Blue   100
1    33  Yellow 100
5    33  Red    80
4    65  Green  500
3    A2  Grey   40
7    A2  Orange 600

我的问题是:我如何通过汇总col C类似于Excel的小计功能,使每个变化在col A小计?数据帧的最终输出应该如下所示:

A        B      C
2    17       White  250
6    17       Purple -50
Subtotal        200  
0    21       Blue   100
Subtotal        100
1    33       Yellow 100
5    33       Red    80
Subtotal        180
4    65       Green  500
Subtotal        500
3    A2       Grey   40
7    A2       Orange 600
Subtotal        640

您可以concat您的原始df和分组的小计。

df1 =  pd.concat([df,
df.groupby(['A'],as_index=False)['C'].sum()]).sort_values('A')
df1.loc[df1['B'].isnull(), 'A'] = 'Subtotal'
print(df1.fillna(''))
A       B    C
2        17   White  250
6        17  Purple  -50
0  Subtotal          200
0        21    Blue  100
1  Subtotal          100
1        33  Yellow  100
5        33     Red   80
2  Subtotal          180
4        65   Green  500
3  Subtotal          500
3        A2    Grey   40
7        A2  Orange  600
4  Subtotal          640

相关内容

  • 没有找到相关文章

最新更新