28  transform

28.1 合并同组值

import pandas as pd

# 创建示例 DataFrame
data = {
    'A': [1, 2, 3, 4, 5, 6],
    'B': ['apple', 'banana', 'cherry', 'date', 'cherry', 'apple'],
    'C': [1, 2, 3, 4, 3, 6],
    'D': ['dog', 'elephant', 'fox', 'dog', 'fox', 'dog']
}

df = pd.DataFrame(data)

# 使用 transform 和 lambda 函数进行合并
df['Merged_D'] = df.groupby(['B', 'D'])['A'].transform(lambda x: ';'.join(x.astype(str)))

# 输出结果
df
A B C D Merged_D
0 1 apple 1 dog 1;6
1 2 banana 2 elephant 2
2 3 cherry 3 fox 3;5
3 4 date 4 dog 4
4 5 cherry 3 fox 3;5
5 6 apple 6 dog 1;6
import pandas as pd

# 创建示例 DataFrame
data = {
    'A': [1, 2, 1, 4, 5],
    'B': ['apple', 'banana', 'cherry', 'date', 'elderberry'],
    'C': [3, 2, 3, 4, 3],
    'D': ['dog', 'elephant', 'fox', 'dog', 'fox']
}

df = pd.DataFrame(data)

# 使用 transform 和 lambda 函数进行合并
df['Merged_D'] = df.groupby(['A', 'C'])['D'].transform(lambda x: ';'.join(x))

# 删除重复行
df = df.drop_duplicates(subset=['A', 'C']).reset_index(drop=True)

# 输出结果
df
A B C D Merged_D
0 1 apple 3 dog dog;fox
1 2 banana 2 elephant elephant
2 4 date 4 dog dog
3 5 elderberry 3 fox fox

28.2 实例

28.2.1 学科评价指标转换为layout

import pandas as pd

df = pd.read_excel('data/附录四:医院学科建设评价体系.xlsx', skiprows=1)
df
一级指标 二级指标 三级指标 评分标准 得分与扣分 备注
0 A1 科室发展指标 B1  科室综合建设 C1 重点专科 1.有重点专(学)科 国家级 10 分 NaN
1 NaN NaN NaN NaN 省级 8 分 NaN
2 NaN NaN NaN NaN 市级 5 分 NaN
3 NaN NaN NaN NaN 无 0 分 NaN
4 NaN NaN C2 临床医学中心 2.有临床医学中心 国家级 10 分 NaN
... ... ... ... ... ... ...
141 NaN NaN NaN NaN 不达标 0 分 NaN
142 NaN NaN C46 教学论文数量 全年发表教学类论文不少于 1 篇 达标 1 分 NaN
143 NaN NaN NaN NaN 不达标 0 分 NaN
144 NaN NaN C47 公共教学培训数量 保质保量完成相关重大教学培训公派任务,如教学培训检查及认证、住培项目推进、重大教学项目\n等 保质保量完成任务加2分/次;拒绝执行扣 4 分/次;未及时完成扣 2 分/次;不符合要求扣 ... NaN
145 NaN NaN C48 高层次研讨班数量 高层次研讨班数量 每增加一项加 2 分 NaN

146 rows × 6 columns

df1 = df.copy()
df1 = df1.drop(columns='备注')
df1 = df1.fillna(method='pad')
df1
一级指标 二级指标 三级指标 评分标准 得分与扣分
0 A1 科室发展指标 B1  科室综合建设 C1 重点专科 1.有重点专(学)科 国家级 10 分
1 A1 科室发展指标 B1  科室综合建设 C1 重点专科 1.有重点专(学)科 省级 8 分
2 A1 科室发展指标 B1  科室综合建设 C1 重点专科 1.有重点专(学)科 市级 5 分
3 A1 科室发展指标 B1  科室综合建设 C1 重点专科 1.有重点专(学)科 无 0 分
4 A1 科室发展指标 B1  科室综合建设 C2 临床医学中心 2.有临床医学中心 国家级 10 分
... ... ... ... ... ...
141 A5 教学能力指标 B17 教学工作 C45 教学带教数量 不低于与前一年同期水平 不达标 0 分
142 A5 教学能力指标 B17 教学工作 C46 教学论文数量 全年发表教学类论文不少于 1 篇 达标 1 分
143 A5 教学能力指标 B17 教学工作 C46 教学论文数量 全年发表教学类论文不少于 1 篇 不达标 0 分
144 A5 教学能力指标 B17 教学工作 C47 公共教学培训数量 保质保量完成相关重大教学培训公派任务,如教学培训检查及认证、住培项目推进、重大教学项目\n等 保质保量完成任务加2分/次;拒绝执行扣 4 分/次;未及时完成扣 2 分/次;不符合要求扣 ...
145 A5 教学能力指标 B17 教学工作 C48 高层次研讨班数量 高层次研讨班数量 每增加一项加 2 分

146 rows × 5 columns

df['评分细则'] = df1.groupby(by=['三级指标','评分标准'])['得分与扣分'].transform(lambda x: ';\n'.join(x))

df = df.dropna(subset=['评分标准']).drop(columns=['得分与扣分']).reset_index(drop=True)

df.to_csv('data/评价指标细则.csv', index=False)
# 这个循环可直接套用到layout,不用先转换成component_dict再转写layout

import numpy as np
import os
# 转换成markdown
file_name = 'data/markdown.txt'
if os.path.exists(file_name):  # append模式,只执行1次
    pass
else:
    for i in range(df.shape[0]):
        for col in df.columns: 
            cell_val = str(df.loc[i, col])
            if cell_val != 'nan':
                # print(cell_val)
                cell_val += '\n'
                if col == "一级指标":
                    with open(file_name, 'a') as f:
                        f.write(f"# {cell_val}")
                elif col == "二级指标":
                    with open(file_name, 'a') as f:
                        f.write(f"## {cell_val}")
                elif col == "三级指标":
                    with open(file_name, 'a') as f:
                        f.write(f"### {cell_val}")
                elif col == "评分细则":
                    with open(file_name, 'a') as f:
                        f.write(cell_val)
                elif col == "备注":
                    with open(file_name, 'a') as f:
                        f.write(cell_val)
component_df = pd.read_csv('data/评价指标细则.csv')
component_df
一级指标 二级指标 三级指标 评分标准 备注 评分细则
0 A1 科室发展指标 B1  科室综合建设 C1 重点专科 1.有重点专(学)科 NaN 国家级 10 分;\n省级 8 分;\n市级 5 分;\n无 0 分
1 NaN NaN C2 临床医学中心 2.有临床医学中心 NaN 国家级 10 分;\n省级 8 分;\n市级 5 分;\n无 0 分
2 NaN NaN C3 重点实验室 3.有重点实验室 NaN 国家级 10 分;\n省级 8 分;\n市级 5 分;\n无 0 分
3 NaN B2 科室总体排名 C4 最佳专科排行榜 1.在当年复旦大学医院管理研究所发布最佳专科排行榜中,上榜或获得提名 NaN 全国前10 名 15 分;\n全国提名 10 分;\n华南区前 5 名 8 分;\n华南区提...
4 NaN NaN C5 科技影响力排行 2. 在当年中国医学科学院医学信息研究所发布中国医院科技影响力排行榜中,获得科技影响力排名 NaN 未上榜或未获得提名不得分;\n前 10 名 15 分;\n前 20 名 10 分;\n前 3...
5 NaN B3 履行社会责任 C6 突发事件救治能力 1.科室参与重大公共卫生突发事件救治,获得省市以上表彰 NaN 获得 10 分;\n未获得 0分
6 NaN NaN C7 对口支援能力 2.科室完成对口支援任务,获得省市以上表彰 NaN 获得 10 分;\n未获得 0 分
7 NaN NaN C8 干部保健工作 3.干部保健工作保障突出,经院党委会讨论,给予加分 NaN 最高 10 分
8 NaN B4 病人满意度 C9 全年综合满意度 1.全年综合满意度≥95%且位于全院前十名科室 NaN 按照名次依次得分(10-1 分)
9 NaN NaN C10 有效投诉数量 2.如有有效投诉一起则下降2个名次,如有有缺陷投诉一起则下降1个名次 NaN 有效投诉扣 3 分/例;\n有缺陷投诉扣 1.5 分/例
10 A2 人才队伍指标 B5 学科带头人 C11 学会任职 中华、省、市医学会系列;中华、省、市中医药学会系列;中国、省、市医师协会系列;中国科协下属的... NaN 医学会、中医药学会系列:全国主委 5 分;\n医学会、中医药学会系列:全国副主委、常委 4 ...
11 NaN NaN C12 专业技术水平 参加行业指南规范或国家级学会牵头制定的专家共识的编制 NaN 参加行业指南规范编制 1 分/项(可累加,封顶 5 分);\n未参加 0 分
12 NaN NaN C13 科研项目 科研项目开展情况 国家级重大、重点项目:国家自然科学基金委员会的国家自然基金重点项目、重点国际合作项目、重大项... 获得国家级重大、重点项目 5 分/项;\n获国家自然基金面上项目 4 分/项;\n申报国家级...
13 NaN NaN C14 科研创\n新成果 科研创新成果得分情况 NaN 获得发明专利 3 分/项(排名前 2);\n在《SCIENCE》《NATURE》《CELL》...
14 NaN NaN C15 人才队伍建设与培养 每培养 1 位高层次人才 NaN 按照标准每增加一位加 10 分
15 NaN B6 人才引进 C16 高层次人才建设 1.科室有院士(组织人事处) NaN 科室有院士 30 分
16 NaN NaN NaN 2.科室每(在培养期内)新增一名杰青、优青、长江学者、青年长江学者、国家百千万人才工程或国家... NaN 每新增 1 人 加 20 分
17 NaN NaN NaN 3.任期内的学会任职情况(中华、省、市医学会系列;中华、省、市中医药学会系列;中国、省、市医... 个人如有多个学会任职,就高计分。候任主委按照副主委计分 医学会、中医药学会系列:全国主委 20 分/人;\n医学会、中医药学会系列:全国副主委 18...
18 NaN B7 人才梯队 C17 职称占比 科室人才梯队合理,高级职称占比\n达到医院平均水平 NaN 达标 1 分;\n未达标 0 分
19 NaN NaN C18 人才培养计划 科室有系统的人才培养计划,特别是对新入职的博士员工,制定并落实职业规划,一人一策,提高人才在... NaN 达标 2 分;\n未达标 0分
20 NaN NaN C19 人才架构 科室人才丰满,有与学科发展相适应的各类人才,如复合型人才、后备人才、博士后和专职科研人才等 NaN 复合型人才、后备人才、博士后和专职科研人才,每有 1 项得 0.5 分,最多得 2 分;\n...
21 A3 医疗指标 B8 医疗质量 C20 亚专科建设 1.设立亚专科 3 个以上;\n2.开设一项以上专病门诊;\n3.亚专科诊疗范围所属病种的病... 亚专科标准:学术带头人正高/副高职称,团队骨干≥3 人,中高级在团队中比例≥70%,所属床位... 达标 1 分;\n不达标扣 0.2 分/项
22 NaN NaN C21 新技术引进 达到科室具体指标要求,含省、市引进奖及院内十佳新技术引进奖 NaN 达标 2 分;\n每低于 25%扣1 分
23 NaN NaN C22 核心制度落实 查房、会诊等核心制度落实;危急值处置及时,日间医疗及 MDT 开展达标;手术安全核查及手术准... NaN 达标 3 分;\n不达标扣 0.5 分/次
24 NaN NaN C23 病历质量 1.住院病历质量和纸质病历归档率 NaN 达标 2 分(基础分2分?)
25 NaN NaN NaN (1)每月进行病历质量和病案首页质量自查并有记录 NaN 未进行自查扣 0.5 分
26 NaN NaN NaN (2)病历质量:甲级率≥90%,且无丙级病历 NaN 甲级率不达标扣 0.5 分;院内检查发现丙级病历每份扣 0.5 分;院外检查发现丙级病历每份...
27 NaN NaN NaN (3)病案首页合格率≥90% NaN 首页合格率不达标扣0.5分
28 NaN NaN NaN (4)出院纸质病历三个工作日归档率≥90% NaN 归档率不达标扣0.5 分
29 NaN NaN NaN 2.门诊病历处方质量\n 因病历或处方不规范造成严重后果的得 0 分 达标 1 分(基础分1分?)
30 NaN NaN NaN (1)门诊病历合格率≥95% NaN ≥90%、<95% 0 分,<90% 扣0.2分
31 NaN NaN NaN (2)门诊处方合格率≥95% NaN ≥90%、<95% 0 分,<90% 扣0.2分
32 NaN NaN C24 临床路径 临床路径病种数≥5 个 NaN 达标得 1.5 分;\n少于5 个病种扣 0.5 分
33 NaN NaN NaN 路径实际在用,入径率达到科室具体指标要求 NaN 入径率未达标扣0.5 分
34 NaN NaN NaN 根据 DRG 数据、路径实施情况等及时修订路径模板 NaN 未按要求及时修订路径模板扣0.5 分
35 NaN NaN C25 质量控制管理 落实科主任是科室医疗质量第一责任人,每月组织召开科室质控小组会议,质控记录详细,做好科室质量... NaN 达标得 0.5 分;\n业务科室月度基础管理考核提出扣分的,扣 0.1分/次
36 NaN NaN C26 CMI 值 不低于与前一年同期水平 NaN 达标得 1 分;\n不达标得 0 分
37 NaN B9 医疗运行效率 C27 平均住院日及门诊量 平均住院日按季度统计,达到科室具体指标要求 NaN 达标得 2 分 ;\n平均住院日每超 1%扣 1 分
38 NaN NaN NaN 专科门诊量要达到全年指标; NaN 门诊量每低于指标 5%扣 0.5 分;最高扣 1 分
39 NaN NaN NaN 双休日必须开设周末专家门诊,且门诊量逐步提高 NaN 未开设周末专家门诊扣 0.5 分
40 NaN NaN C28 三、四级 手术比例 与科室上一年同期三四级手术比例比较,比例超过上年 NaN 高于上一年得 2 分 ;\n与上一年持平得 1 分 ;\n低于上一年比例得 0分
41 NaN B10 医疗安全 C29 医疗纠纷数 无主要责任及以上事故,无有效投诉 NaN 达标得 3 分,每发现 1 例扣 1.5分(其中每 10%的责任比例扣0.15分)
42 NaN NaN C30 低风险组死亡率 科室低风险组死亡率低于广东省三级综合医院平均水平 NaN 达标得 1 分
43 NaN B11 行为规范 C31 抗菌药物使用强度 住院患者抗菌药物使用率、使用强度,门急诊抗菌药物处方比例,一类切口的使用率达标,不达标按医院... NaN 达标得 2 分,未达标扣 1-2 分;不合理使用,扣 0.1 分/例次
44 NaN NaN C32 高值耗材使用 高值耗材合理、规范使用,与基础管理考核相挂钩,科室耗占比呈下降趋势 NaN 达标得 1 分;\n不达标得 0 分
45 A4 科研水平指标 B12 科研成果 C34 项目结题数量 各专科课题按期结题 NaN 达标得 2 分;\n每 1 项未结题扣 1 分
46 NaN NaN C35 国/省基金申报数量 学科每年每位博士须申报国家基金 1 项(除因基金委政策原因不得申报者外);每年每位硕士须申报... NaN 完成 60%不扣分 ;\n完成 30%-60%扣 1 分 ;\n低于 30%扣 3 分 ;\...
47 NaN NaN C36 科研经费数额 科研经费达标 NaN 100%完成得 1 分 ;\n每少完成 50% 扣 0.5 分;\n低于 50% 扣 1 分...
48 NaN B13 科研转化 C37 科技成果转化数额 科研成果转化金额达标 NaN 100%完成得 1 分;\n完成 50%-100%扣 0.5 分 ;\n完成低于 50%得 ...
49 NaN B14 学术兼职 C38 国家级协会/学会兼职数量 国家级协会/学会兼职数量 NaN 每增加一位加 5 分
50 NaN NaN C39 省市级协会/学会兼职数量 省市级协会/学会兼职数量 NaN 每增加一位加 3 分
51 A5 教学能力指标 B15 师资资源 C40 硕士点/博士点数量 硕士点/博士点数量 NaN 博士点得 5 分;\n硕士点得 3 分;\n都没有得 0分
52 NaN NaN C41 硕士/博士研究生导师数量 硕士/博士研究生导师数量 同时为博士研究生导师和硕士研究生导师,只按博士研究生导师计算 博士研究生导师加 1 分/位;\n硕士研究生导师加 0.5 分/位;\n都没有得 0分
53 NaN B16 继续教育 C42 继续教育人员数量 不低于与前一年同期水平 NaN 达标 1 分;\n不达标 0 分
54 NaN NaN C43 三基考核通过率 三基考核合格率 100% NaN 达标 1 分;\n未通过扣 0.5 分/人次;\n无故缺考 1 分/人次
55 NaN B17 教学工作 C44 住院医师规范化培训数量 住院医师规范化培训覆盖率100%,首次参加医师资格考试通过率、结业率、年度水平测试、公共课考... NaN 达标 4 分;\n未落实到位扣分(未参加临床轮转扣 3 分/人次,私自调整轮转计划扣 2 分...
56 NaN NaN C45 教学带教数量 不低于与前一年同期水平 NaN 达标 1 分;\n不达标 0 分
57 NaN NaN C46 教学论文数量 全年发表教学类论文不少于 1 篇 NaN 达标 1 分 ;\n不达标 0 分
58 NaN NaN C47 公共教学培训数量 保质保量完成相关重大教学培训公派任务,如教学培训检查及认证、住培项目推进、重大教学项目\n等 NaN 保质保量完成任务加2分/次;拒绝执行扣 4 分/次;未及时完成扣 2 分/次;不符合要求扣 ...
59 NaN NaN C48 高层次研讨班数量 高层次研讨班数量 NaN 每增加一项加 2 分