将按类别分类的行添加到我的数据框中

CJ1*_*123 2 row subtotal pandas

我使用 groupby 创建了一个新的聚合数据框,但在每个类别下添加小计行时遇到问题。

我尝试过使用 pd.groupby 和数据透视表并更改索引,但我无法按照我想要的方式表示数据。

  • 为每个“客户”创建“USD_Balance”小计,但将其添加为一列:
df_balance['Subtotal'] = df_balance.groupby('Client')['USD_Balance'].transform('sum')
Run Code Online (Sandbox Code Playgroud)
  • 创建一个 groupby 并与我的原始表合并给出了相同的结果。
+----------+-------------+------------+
|CLient ID | USD_Balance | Subtotal   |
+----------+---------+------------+----
|       1  |     2       |     6      |      
|       1  |     2       |     6      |     
|       1  |     2       |     6      |    
+----------+-------------+------------+
Run Code Online (Sandbox Code Playgroud)
  • 我想如何显示我的数据:
|---------------------|------------------|
|      Client ID      |    USD_Balance   |
|---------------------|------------------|
|          1          |         2        |
|---------------------|------------------|
|          1          |         2        |
|---------------------|------------------|
|          1          |         2        |
|---------------------|------------------|
|        SubTotal     |         6        |
|---------------------|------------------|
Run Code Online (Sandbox Code Playgroud)

我想添加一个小计行,以及每个客户端 ID 组的相应聚合。

预先感谢您对如何像这样呈现我的数据的任何指示!

Erf*_*fan 5

您可以使用groupby和访问每个组并添加计行:

dfs = []

for _, d in df.groupby('CLient ID', as_index=False):
    d.loc['Total', 'USD_Balance'] = df['USD_Balance'].sum()
    dfs.append(d)

df_final = pd.concat(dfs, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
   CLient ID  USD_Balance
0        1.0          2.0
1        1.0          2.0
2        1.0          2.0
3        NaN          6.0
Run Code Online (Sandbox Code Playgroud)