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

时间:2018-07-09 12:58:29

标签: python pandas dataframe pandas-groupby

我正在使用Pandas对来自Excel文件的信息进行分组,并根据这些信息对值进行求和以得出数据摘要。

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

summary_df = df.groupby(["NAME", "CITY"])["QUANTITY"].sum().reset_index()
summary_df.loc["Grand Total"] = summary_df["QUANTITY"].sum()

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

NAME         |   CITY   |   QUANTITY
JOHN         |  LONDON  |     50
STEVE        |  PARIS   |     100
GRAND TOTAL  |   150    |     150

我只想查看QUANTITY下的总计,没有其他列。

1 个答案:

答案 0 :(得分:3)

您可以将总计行添加到groupby系列中,然后然后通过reset_index转换为数据框。当前,您正在用标量填充数据框的整个行,这会触发熊猫使用广播。

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