Skip to main content
 首页 » 编程设计

python之用 Pandas 合并两个数据框

2025年05月04日10me-sa

这是数据框的子集 F1:

id        code    s-code 
l.1        1       11 
l.2        2       12 
l.3        3       13 
f.1        4       NA 
f.2        3        1 
h.1        2        1 
h.3        1        1 

我需要将 F1.id 与 F2.id 进行比较,然后将“id”列中的差异添加到 F2 数据框中,并将添加的“id”的列值填充为 0。

这是第二个数据框 F2:

id        head    sweat  pain 
l.1        1       0      1 
l.3        1       0      0 
f.2        3        1     1 
h.3        1        1     0 

输出应该是这样的:

F3:

id        head    sweat  pain 
l.1        1       0      1 
l.3        3       13     0   
f.2        3        1     1 
h.1        2        1     1 
h.3        1        1     0 
l.2        0        0     0 
h.1        0        0     0 
f.1        0        0     0 

我尝试了不同的解决方案,例如 F1[(F1.index.isin(F2.index)) & (F1.isin(F2))] 返回差异,但没有一个有效。

请您参考如下方法:

通过使用reindex

df2.set_index('id').reindex(df1.id).fillna(0).reset_index() 
Out[371]:  
    id  head  sweat  pain 
0  l.1   1.0    0.0   1.0 
1  l.2   0.0    0.0   0.0 
2  l.3   1.0    0.0   0.0 
3  f.1   0.0    0.0   0.0 
4  f.2   3.0    1.0   1.0 
5  h.1   0.0    0.0   0.0 
6  h.3   1.0    1.0   0.0