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)
如上代码,筛选 医疗机构入库明细
表中的人民医院,按照医保编号进行分组。现在需要对该分组进行求和,有些列不需要求和,重复的就取第一个作为列值。
和另一个表合并,最后将数据输出到新的表格中。