基于python中的两列优化合并

基于python中的两列优化合并,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧: df1 = pd.DataFrame({ 'message' : (["hi","hi","hello?","bye","are you there?","how are you?"]), 'serial' : ([14,12,13,13,14,14]), 'messageOrder': (1,1,1,2,3,2)}) df2 = pd.DataFrame({ 'message' : (["h

我有两个数据帧:

df1 = pd.DataFrame({ 'message' : (["hi","hi","hello?","bye","are you there?","how are you?"]),
                     'serial' : ([14,12,13,13,14,14]),
                     'messageOrder': (1,1,1,2,3,2)})

df2 = pd.DataFrame({ 'message' : (["hi","hi","hello?","bye","are you there?","how are you?"]),
                    'B' : pd.Timestamp('20130102'),
                    'D' : np.array([3] * 6,dtype='int32'),
                    'serial' : ([14,12,13,13,14,14])})
我正在寻找将messageOrder列从df1合并到df2的最佳方法(df2还有许多列我没有包括在示例中)。我想遍历所有行,然后:

  • 验证df1和df2中两行之间的“串行”是否相同
  • 根据内容匹配“消息”列
有没有一种优雅的方法可以做到这一点


数据帧有14000行长,每个“序列”有1-20个值。

df1.merge(df2)
?df1和df2之间的行顺序不一样,如果不比较内容,我无法仅根据“序列”判断“messageOrder”是什么,在许多情况下,不同“序列”中的内容是相同的列:)行的顺序无关紧要
pandas.merge
默认情况下。有趣的是,当我尝试df1.merge(df2)时,表中只保留了一小部分(14000个表中的400个),当我尝试df1.merge(df2,on='serial')时,行数变为37105。我怎样才能避开这件事?