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

基于唯一列值合并两个Pandas DataFrame生成患者KPI全组合

实现方法

你需要的是去重后的患者列表和KPI列表的笛卡尔积,有两种常用实现方案:

方案1:通用兼容版(支持所有Pandas版本)

通过添加临时辅助列做等值连接实现交叉匹配,代码如下:

import pandas as pd

# 你的原始数据
df_patient = pd.DataFrame([['P1'], ['P2'], ['P1'], ['P3']], columns = ['Patient'])
df_KPI = pd.DataFrame([['KPI1'], ['KPI2'], ['KPI3'], ['KPI4']], columns = ['KPI'])

# 第一步:先得到唯一的患者列表
unique_patient = df_patient.drop_duplicates(subset=['Patient'])

# 添加临时同值列,用于笛卡尔积匹配
unique_patient['tmp'] = 1
df_KPI['tmp'] = 1

# 匹配后删除临时列
df_output = pd.merge(unique_patient, df_KPI, on='tmp').drop('tmp', axis=1)

方案2:简洁版(Pandas 1.2.0及以上版本支持)

直接用Pandas内置的交叉连接参数how='cross',无需额外添加临时列:

import pandas as pd

df_patient = pd.DataFrame([['P1'], ['P2'], ['P1'], ['P3']], columns = ['Patient'])
df_KPI = pd.DataFrame([['KPI1'], ['KPI2'], ['KPI3'], ['KPI4']], columns = ['KPI'])

unique_patient = df_patient.drop_duplicates(subset=['Patient'])
df_output = unique_patient.merge(df_KPI, how='cross')

两种方法得到的df_output都和你要求的输出格式完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:36:01