我有一個名為 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
提交
取消