Python - pandas agg 函数

发布时间 2023-11-29 12:12:58作者: Himmelbleu

agg() 函数的常见用法是在分组数据后对特定列应用一个或多个聚合函数,生成汇总统计信息。例如,你可以对数据按照某个列进行分组,然后计算每个组的平均值、总和等。

import pandas as pd

zhaocai = "C:\\Users\\root\\Downloads\\医疗机构入库明细.xlsx"
zhaocai_data = pd.read_excel(zhaocai)

grouped_zhaocai_data = zhaocai_data \
    .loc[zhaocai_data['医院名称'] == '人民医院'] \
    .groupby('医保编码')

his = "C:\\Users\\root\\Downloads\\人民医院HIS系统数据.xlsx"
his_data = pd.read_excel(his)

grouped_his_data = his_data \
    .groupby('医保编码')

aggregations = {
    '产品名称': 'first',
    '规格': 'first',
    '型号': 'first',
    '注册证编号': 'first',
    '生产企业': 'first',
    '配送企业名称': 'first',
    '所属项目': 'first',
    '医保编码': 'first',
    '实际入库数量': 'sum',
    '实际入库金额': 'sum',
}

sum_zhaocai_data = grouped_zhaocai_data.agg(aggregations)
sum_zhaocai_data = sum_zhaocai_data.rename(
    columns={'实际入库数量': '招采平台实际入库数量', '实际入库金额': '招采平台实际入库金额', '医保编码': '产品编码'}
)

sum_his_data = grouped_his_data[['SUM(A.数次)', '金额']].sum()
sum_his_data = sum_his_data.rename(
    columns={'SUM(A.数次)': '医院HIS采购总量', '金额': '医院HIS收货总金额'}
)

merged_data = pd.merge(sum_zhaocai_data, sum_his_data, on='医保编码')

merged_data['医院HIS减去招采平台差额'] = sum_his_data['医院HIS收货总金额'] - sum_zhaocai_data[
    '招采平台实际入库金额']

output_path = "C:\\Users\\root\\Downloads\\差额对比表.xlsx"
merged_data.to_excel(output_path, index=False)

如上代码,筛选 医疗机构入库明细 表中的人民医院,按照医保编号进行分组。现在需要对该分组进行求和,有些列不需要求和,重复的就取第一个作为列值。

和另一个表合并,最后将数据输出到新的表格中。