python - 熊猫数据框中列的有效小计
问题描述
我一直在琢磨一个工作程序的想法,该程序可以使我们的月末报告自动化。目前,它以 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() 有可能吗?它似乎可以选择按行而不是按列分组。我看到的更大的问题是插入到现有的数据帧中,因为熊猫似乎更适合在大型数据集上操作/执行操作,而不是插入/添加信息。
解决方案
# 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'])
推荐阅读
- google-bigquery - BigQuery如何订购嵌套和重复的列?
- reactjs - React-bootstrap Navbar 示例似乎没有在本地呈现
- asp.net-mvc - Identity Server 4:从外部提供者注销
- c++ - 分解数字时输出中的额外“0”
- docker - 如何使用 3 个不同的容器在 docker 上集群 rethinkdb 数据库?
- javascript - 如何在 7 天前获得凌晨 12 点?
- android - 动态可扩展 Recyclerview 列表失败
- python - 在数据框列中搜索“*”字符串
- azure - 如何从 Azure 导出或保留长达 5 年的日志?
- apache-spark - Spark 3结构化流在Kafka源中使用maxOffsetsPerTrigger和Trigger.Once