这是数据框的子集 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
