You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas根据关联列值条件重命名重复的Hospital列行

嘿,这个需求我刚好有处理经验,用Pandas完全可以搞定!咱们先理清楚逻辑,再一步步写代码实现。

首先,核心思路是:先识别出那些同一个医院对应多个不同科室的行,然后给这些行的医院名称加上区分标识(比如科室名或者序号);而同一个医院只有单一科室的,就保持原名不变。

第一步:构造示例数据(方便你测试)

先模拟一个和你需求匹配的DataFrame,你可以直接替换成自己的数据:

import pandas as pd

# 示例数据
data = {
    'Hospital': ['A医院', 'A医院', 'B医院', 'B医院', 'C医院'],
    'GeneralRepresentation': ['内科', '外科', '内科', '内科', '儿科']
}
df = pd.DataFrame(data)

第二步:实现重命名逻辑

这里我提供两种常见的重命名方式,你可以根据自己的需求选:

方式1:医院名称 + 科室名称(最直观)

这种方式会把重复医院但不同科室的行,命名成「医院名-科室名」,比如A医院内科、A医院外科:

# 先计算每个医院对应的不同科室数量,存到临时列里
df['unique_dept_count'] = df.groupby('Hospital')['GeneralRepresentation'].transform('nunique')

# 逐行判断,生成新的医院名称
df['New_Hospital'] = df.apply(
    lambda row: f"{row['Hospital']}-{row['GeneralRepresentation']}" if row['unique_dept_count'] > 1 else row['Hospital'],
    axis=1
)

# 删掉临时列,保持数据整洁
df = df.drop('unique_dept_count', axis=1)

运行后得到的结果是:

Hospital GeneralRepresentation New_Hospital
0      A医院                    内科        A医院-内科
1      A医院                    外科        A医院-外科
2      B医院                    内科          B医院
3      B医院                    内科          B医院
4      C医院                    儿科          C医院

方式2:医院名称 + 序号(更简洁)

如果你不想显示科室名,只想用序号区分,比如A医院1、A医院2,可以这么写:

# 给每个医院内的不同科室分配唯一序号
df['dept_rank'] = df.groupby('Hospital')['GeneralRepresentation'].rank(method='dense', ascending=True).astype(int)

# 生成新的医院名称
df['New_Hospital'] = df.apply(
    lambda row: f"{row['Hospital']}{row['dept_rank']}" if row['dept_rank'] > 1 else row['Hospital'],
    axis=1
)

# 删掉临时列
df = df.drop('dept_rank', axis=1)

运行后结果是:

Hospital GeneralRepresentation New_Hospital
0      A医院                    内科          A医院
1      A医院                    外科         A医院2
2      B医院                    内科          B医院
3      B医院                    内科          B医院
4      C医院                    儿科          C医院

关键逻辑解释

  • groupby('Hospital')['GeneralRepresentation'].transform('nunique'):这个方法会给每一行标记出它所属医院的不同科室总数,方便我们快速判断是否需要重命名。
  • apply函数:逐行检查条件,根据是否需要重命名来生成新的医院名称,灵活性拉满,你可以根据自己的需求修改拼接规则(比如用空格、下划线代替横杠)。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 06:50:06