首页 > 解决方案 > 熊猫数据框中列的有效小计

问题描述

我一直在琢磨一个工作程序的想法,该程序可以使我们的月末报告自动化。目前,它以 Excel 格式为我们创建所有报告,然后我们手动使用 Excel 的小计功能对其列进行小计并将数据格式化为表格。

我的想法是按客户对每一列进行小计,如下所示:

病人 日期 接收# 描述 数量 价格
例如,约翰 2021 年 2 月 1 日 357649 阿司匹林 30 6.99
例如,约翰 2021 年 2 月 1 日 357650 药品 30 13.99
例如,约翰 2021 年 2 月 1 日 357651 泰诺 30 7.99
示例,约翰小计 28.97
例如,苏珊 2021 年 2 月 12 日 357652 昂贵的药物 30 51.99
例如,苏珊 2021 年 2 月 12 日 357653 药品 30 13.99
例如,苏珊 2021 年 2 月 12 日 357654 泰诺 30 7.99
示例,SUSAN 小计 73.97

现有数据框如下所示:

病人 日期 接收# 描述 数量 价格
例如,约翰 2021 年 2 月 1 日 357649 阿司匹林 30 6.99
例如,约翰 2021 年 2 月 1 日 357650 药品 30 13.99
例如,约翰 2021 年 2 月 1 日 357651 泰诺 30 7.99
例如,苏珊 2021 年 2 月 12 日 357652 昂贵的药物 30 51.99
例如,苏珊 2021 年 2 月 12 日 357653 药品 30 13.99
例如,苏珊 2021 年 2 月 12 日 357654 泰诺 30 7.99

groupby() 有可能吗?它似乎可以选择按行而不是按列分组。我看到的更大的问题是插入到现有的数据帧中,因为熊猫似乎更适合在大型数据集上操作/执行操作,而不是插入/添加信息。

标签: pythonpython-3.xpandasdataframeconceptual

解决方案


# Calculate sums
df_subtotal = df.groupby('Patient', as_index=False)[['Price']].agg('sum')
# Manipulate string Patient
df_subtotal['Patient'] = df_subtotal['Patient'] + ' subtotal'
# Join dataframes
df_new = pd.concat([df, df_subtotal], axis=0, ignore_index=True)
# Sort
df_new = df_new.sort_values(['Patient', 'Date'])

推荐阅读