我正在使用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下的总计,没有其他列。
答案 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