我有一個(gè)名為 x1 的數(shù)據(jù)框: FID g1 g2 g3 0 19 20 13 1 16 11 14 2 15 20 11和一個(gè)名為 x2 的數(shù)據(jù)框: 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)但認(rèn)為這僅在數(shù)據(jù)框具有匹配的模式時(shí)才有效。我可以只保留 x1 中不共享 x2 中 FID 值的行嗎?
2 回答

慕尼黑5688855
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以使用在 的列中出現(xiàn)的列中pd.Series.isin的值創(chuàng)建布爾系列。FIDx1FIDx2
然后只需使用pd.DataFrame.locwith 運(yùn)算符~來反轉(zhuǎn)布爾系列并選擇其列中x1的值未出現(xiàn)在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

猛跑小豬
TA貢獻(xiàn)1858條經(jīng)驗(yàn) 獲得超8個(gè)贊
x1.drop(x2['FID'])
輸出
FID g1 g2 g3
0 0 19 20 13
2 2 15 20 11
添加回答
舉報(bào)
0/150
提交
取消