为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 删除一个数据框中的行,这些行与另一个数据框的列中的行共享一个公共值

Pandas 删除一个数据框中的行,这些行与另一个数据框的列中的行共享一个公共值

皈依舞 2022-10-05 18:29:31
我有一个名为 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


查看完整回答
反对 回复 2022-10-05
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

x1.drop(x2['FID'])

输出

    FID  g1  g2  g3

 0    0  19  20  13

 2    2  15  20  11


查看完整回答
反对 回复 2022-10-05
  • 2 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号