在 DataFrame 底部添加一行以获得总计

Non*_*gon 2 python dataframe pandas pandas-groupby

我正在使用 Pandas 对 Excel 文件中的信息进行分组,并使用此信息对值求和以获得数据摘要。

它从 excel 中提取某些信息,然后对列进行分组以反映我想要的摘要。

summary_df = df.groupby(["NAME", "CITY"])["QUANTITY"].sum().reset_index()
summary_df.loc["Grand Total"] = summary_df["QUANTITY"].sum()
Run Code Online (Sandbox Code Playgroud)

这将返回我想要的信息并给我总和,但它显示了数据框每一列的数量摘要,如下所示:

NAME         |   CITY   |   QUANTITY
JOHN         |  LONDON  |     50
STEVE        |  PARIS   |     100
GRAND TOTAL  |   150    |     150
Run Code Online (Sandbox Code Playgroud)

我只想查看 QUANTITY 下的总计,而不想查看其他列。

jpp*_*jpp 7

您可以将您的总行添加到您的groupby系列中,然后通过reset_index. 目前,您正在使用标量填充数据帧的整行,这会触发 Pandas 使用广播。

df = pd.DataFrame([['A', 'LONDON', 10], ['A', 'LONDON', 20],
                   ['B', 'CHICAGO', 30], ['C', 'CHICAGO', 20]],
                  columns=['NAME', 'CITY', 'QUANTITY'])

df_summary = df.groupby(['NAME', 'CITY'])['QUANTITY'].sum()
df_summary.loc['Grand Total'] = df_summary.sum()

df_summary = df_summary.reset_index()

print(df_summary)

          NAME     CITY  QUANTITY
0            A   LONDON        30
1            B  CHICAGO        30
2            C  CHICAGO        20
3  Grand Total                 80
Run Code Online (Sandbox Code Playgroud)