求助:如何使用Pandas按PatientID_Time列合并两个关联DataFrame?
基于PatientID_Time合并DataFrame的解决方案
直接用pandas的merge函数就能实现按相同PatientID_Time合并两个DataFrame,提取对应SeqID和HB_Mayo_impu的步骤如下:
基础合并代码
假设你的两个DataFrame分别命名为df1(含SeqID的那个)和df2(含HB_Mayo_impu的那个),执行以下代码:
import pandas as pd # 按PatientID_Time列合并,默认取两个表都存在的匹配项(inner连接) merged_df = pd.merge(df1, df2, on='PatientID_Time', how='inner') # 提取你需要的三列 result_df = merged_df[['PatientID_Time', 'SeqID', 'HB_Mayo_impu']]
常见问题排查(如果之前合并失败)
- 列名不一致:检查两个表的合并列名是否完全一致(比如大小写、空格),可以用
print(df1.columns)和print(df2.columns)确认,不一致的话用rename统一:# 示例:如果df2的列名是patientid_time,改成和df1一致 df2.rename(columns={'patientid_time': 'PatientID_Time'}, inplace=True) - 重复值导致结果异常:如果某个
PatientID_Time在单个表中有重复行,合并后会出现笛卡尔积。可以先去重:df1 = df1.drop_duplicates(subset='PatientID_Time') df2 = df2.drop_duplicates(subset='PatientID_Time') - 连接方式选择:如果需要保留某一个表的所有行(即使另一个表无匹配),可以修改
how参数:how='left':保留df1的所有行,匹配不到的df2列值为NaNhow='right':保留df2的所有行,匹配不到的df1列值为NaNhow='outer':保留两个表的所有行,匹配不到的列值为NaN
内容的提问来源于stack exchange,提问作者RECEP TAYYİP DURGUT
相关产品推荐
相关产品推荐

