如何通过结局标签关联Pandas DataFrame中的患者数据?
解决方法
可以用 pandas 结合 itertools.combinations 实现需求,核心逻辑是按结局标签分组后,为每组生成不重复的患者ID两两组合,最后合并成目标DataFrame。
代码实现
import pandas as pd from itertools import combinations # 构建示例输入DataFrame df = pd.DataFrame({ 'ID': [1, 2, 3, 4, 5], 'Outcome': [1, 0, 1, 1, 0] }) # 生成同结局标签下的ID两两组合 pair_list = [] for _, group in df.groupby('Outcome'): # 生成所有长度为2的不重复组合(自动排除反向重复如(3,1)这类情况) pairs = combinations(group['ID'], 2) pair_list.extend(pairs) # 转换为目标格式的DataFrame result_df = pd.DataFrame(pair_list, columns=['ID 1', 'ID 2']) print(result_df)
代码说明
groupby('Outcome'):将原始数据按结局标签(0/1)拆分分组combinations(group['ID'], 2):针对每组的ID列,生成所有无顺序重复的两两组合,完全匹配你给出的示例输出逻辑- 最后将所有组合汇总后转成DataFrame,设置对应列名即可得到结果
运行代码后输出结果:
ID 1 ID 2 0 1 3 1 1 4 2 3 4 3 2 5
内容的提问来源于stack exchange,提问作者user17753
相关产品推荐
相关产品推荐

