Skip to main content
 首页 » 编程设计

python之按列值连接数据帧

2025年05月04日16myhome

如何在 A 和 B 列上合并以下两个数据框:

df1 
A    B    C 
1    2    3 
2    8    2 
4    7    9 
 
df2 
A    B    C 
5    6    7 
2    8    9 

并使用 result 仅获取这两个匹配行的结果。

df3 
A    B    C 
2    8    2 
2    8    9 

请您参考如下方法:

您可以连接它们并删除不重复的:

conc = pd.concat([df1, df2]) 
conc[conc.duplicated(subset=['A', 'B'], keep=False)] 
Out:  
   A  B  C 
1  2  8  2 
1  2  8  9 

如果有重复,

df1 
Out:  
   A  B  C 
0  1  2  3 
1  2  8  2 
2  4  7  9 
3  4  7  9 
4  2  8  5 
 
df2 
Out:  
   A  B   C 
0  5  6   7 
1  2  8   9 
3  5  6   4 
4  2  8  10 

您可以通过 bool 数组跟踪重复的:

cols = ['A', 'B'] 
bool1 = df1[cols].isin(df2[cols].to_dict('l')).all(axis=1) 
bool2 = df2[cols].isin(df1[cols].to_dict('l')).all(axis=1) 
 
pd.concat([df1[bool1], df2[bool2]]) 
Out:  
   A  B   C 
1  2  8   2 
4  2  8   5 
1  2  8   9 
4  2  8  10