我有一个名为 x1 的数据框: FID g1 g2 g3 0 19 20 13 1 16 11 14 2 15 20 11和一个名为 x2 的数据框: FID g1 1 16 我想更改 x1,使其不包括 x2 中的行: FID g1 g2 g3 0 19 20 13 2 15 20 11我试过了:x1 = pd.concat([x1,x2]).drop_duplicates(keep=False)但认为这仅在数据框具有匹配的模式时才有效。我可以只保留 x1 中不共享 x2 中 FID 值的行吗?
2 回答

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
您可以使用在 的列中出现的列中pd.Series.isin的值创建布尔系列。FIDx1FIDx2
然后只需使用pd.DataFrame.locwith 运算符~来反转布尔系列并选择其列中x1的值未出现在FID列中的行:FIDx2
cond = x1.FID.isin(x2.FID)
x1.loc[~cond]
# output:
FID g1 g2 g3
0 0 19 20 13
2 2 15 20 11
添加回答
举报
0/150
提交
取消