如何对比两个Pandas DataFrame指定列并合并匹配行生成新DataFrame
解决DataFrame匹配行合并问题
先明确你的两个DataFrame定义:
import pandas as pd df1 = pd.DataFrame({'ID1':['A','B','C','D'], 'ID2':['E','F','G','H'], 'No1':[1, 2, 3, 4]}) df2 = pd.DataFrame({'X':['X1','X2','X3','X4'], 'Y':['Y1','Y2','Y3','Y4'], 'No2':[ 3, 4, 5, 6]})
要实现基于No1和No2匹配值的行合并,直接用pandas的merge方法即可,指定匹配列并采用内连接(只保留两边都存在的匹配行):
# 执行内连接合并,匹配No1和No2的相同值 df_new = pd.merge(df1, df2, left_on='No1', right_on='No2', how='inner') # 可选:删除重复的No2列(因为和No1值完全一致) df_new = df_new.drop('No2', axis=1)
得到的df_new结构如下:
ID1 ID2 No1 X Y 0 C G 3 X1 Y1 1 D H 4 X2 Y2
如果需要转换成你给出的列表格式,执行以下代码:
df_new.values.tolist()
输出结果:
[['C', 'G', 3, 'X1', 'Y1'], ['D', 'H', 4, 'X2', 'Y2']]
内容的提问来源于stack exchange,提问作者pymn
相关产品推荐
相关产品推荐

