Skip to main content
 首页 » 编程设计

python之如何使用 pandas python 合并数据帧

2025年05月04日10zhujiabin

我有以下两个数据框

数据1

company,values 
a,76 
b,56 
c,78 
d,56 

数据框2

company,comp_id 
a,a1 
b,b1 

我需要如下格式的输出

company,value,comp_id 
 a,76,a1 
 b,56,b1 
 c,78 
 d,56 

如何合并如下格式的数据框?

请您参考如下方法:

使用merge与 fillna :

#fillna only column comp_id 
print (pd.merge(df1,df2,on='company', how='outer').fillna({'comp_id':''})) 
 
#fillna all dataframe 
#print (pd.merge(df1,df2,on='company', how='outer').fillna('')) 
 
  company  values comp_id 
0       a      76      a1 
1       b      56      b1 
2       c      78         
3       d      56   

示例:

df1 = pd.DataFrame({'values': {0: 76, 1: 56, 2: 78, 3: 56},  
                    'company': {0: 'a', 1: 'b', 2: 'c', 3: 'd'}}) 
print (df1) 
  company  values 
0       a      76 
1       b      56 
2       c      78 
3       d      56 
 
df2 = pd.DataFrame({'comp_id': {0: 'a1', 1: 'b1'}, 'company': {0: 'a', 1: 'b'}}, 
                   columns=['company','comp_id']) 
print (df2) 
  company comp_id 
0       a      a1 
1       b      b1 
 
print (pd.merge(df1,df2,on='company', how='outer')) 
  company  values comp_id 
0       a      76      a1 
1       b      56      b1 
2       c      78     NaN 
3       d      56     NaN 
 
#fillna only column comp_id 
print (pd.merge(df1,df2,on='company', how='outer').fillna({'comp_id':''})) 
  company  values comp_id 
0       a      76      a1 
1       b      56      b1 
2       c      78         
3       d      56