熊猫数据框中列的有效小计

时间:2021-03-25 20:16:54

标签: python python-3.x pandas dataframe conceptual

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

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

<头>
病人 日期 接收# 说明 数量 价格
例子,约翰 2/1/2021 357649 阿司匹林 30 6.99
例子,约翰 2/1/2021 357650 药物 30 13.99
例子,约翰 2/1/2021 357651 泰诺 30 7.99
示例,约翰小计 28.97
例子,苏珊 2/12/2021 357652 昂贵的药物 30 51.99
例子,苏珊 2/12/2021 357653 药物 30 13.99
例子,苏珊 2/12/2021 357654 泰诺 30 7.99
示例,苏珊小计 73.97

现有的数据框看起来像:

<头>
病人 日期 接收# 说明 数量 价格
例子,约翰 2/1/2021 357649 阿司匹林 30 6.99
例子,约翰 2/1/2021 357650 药物 30 13.99
例子,约翰 2/1/2021 357651 泰诺 30 7.99
例子,苏珊 2/12/2021 357652 昂贵的药物 30 51.99
例子,苏珊 2/12/2021 357653 药物 30 13.99
例子,苏珊 2/12/2021 357654 泰诺 30 7.99

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

1 个答案:

答案 0 :(得分:1)

# 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'])
相关问题