Python 在多个公共值上合并数据帧

Python 在多个公共值上合并数据帧,python,pandas,merge,Python,Pandas,Merge,我正在尝试基于公共值合并两个数据帧。问题是存在重复的值。我正在尝试根据第一次出现合并这些值。我想合并列B和列C中的值 import pandas as pd df = pd.DataFrame({ 'A' : ['10:00:05','11:00:05','12:00:05','13:00:05','14:00:05'], 'B' : ['ABC','DEF','XYZ','ABC','DEF'], 'C' : [1,1,1,1,

我正在尝试基于公共值合并两个数据帧。问题是存在重复的值。我正在尝试根据第一次出现合并这些值。我想合并
列B
列C
中的值

import pandas as pd

df = pd.DataFrame({          
    'A' : ['10:00:05','11:00:05','12:00:05','13:00:05','14:00:05'],
    'B' : ['ABC','DEF','XYZ','ABC','DEF'],          
    'C' : [1,1,1,1,2],            
    })

df1 = pd.DataFrame({          
    'A' : ['10:00:00','11:00:00','12:00:00','13:00:00','14:00:00'],
    'B' : ['ABC','DEF','XYZ','ABC','DEF'],         
    'C' : [1,1,1,2,2],          
    })
如果我尝试:

df2 = pd.merge(df, df1, on = ["B", "C"])
输出:

        A_x    B  C       A_y
0  10:00:05  ABC  1  10:00:00
1  13:00:05  ABC  1  10:00:00
2  11:00:05  DEF  1  11:00:00
3  12:00:05  XYZ  1  12:00:00
4  14:00:05  DEF  2  14:00:00
鉴于我的预期产出是:

          A    B  C         D
0  10:00:05  ABC  1  10:00:00
1  11:00:05  DEF  1  11:00:00
2  12:00:05  XYZ  1  12:00:00
3  13:00:05  ABC  1          
4  14:00:05  DEF  2  14:00:00

您可以使用
merge
然后使用
duplicated
+
loc
更新合并列:

merge_cols = ['B', 'C']

df2 = pd.merge(df, df1, on=merge_cols)

df2.loc[df2[merge_cols].duplicated(), 'A_y'] = ''

print(df2)

        A_x    B  C       A_y
0  10:00:05  ABC  1  10:00:00
1  13:00:05  ABC  1          
2  11:00:05  DEF  1  11:00:00
3  12:00:05  XYZ  1  12:00:00
4  14:00:05  DEF  2  14:00:00

@Rushabh Mehta,这不是那个问题吗?你能再看看吗。你的旗子挡住了我的问题是的,我的旗子打错了问题。然而,这绝对是一个重复的问题。@RushabhMehta,你能附上一个正确的问题吗?现在正在研究,我有点好奇为什么你对我的失败感到相当慌乱