3 回答

TA貢獻1820條經驗 獲得超10個贊
使用Series.isin
+Series.duplicated
創建一個布爾掩碼并使用此掩碼過濾來自以下行的行df1
:
m = df1['a'].isin(df2['a']) & ~df1['a'].duplicated()
df = df1[~m]
結果:
print(df)
? ?a? b? c
0? 1? 1? 6
1? 1? 2? 5
3? 3? 4? 3
5? 4? 6? 1

TA貢獻1829條經驗 獲得超7個贊
嘗試這個
df1=pd.DataFrame({'a':[1,1,2,3,4,4],'b':[1,2,3,4,5,6],'c':[6,5,4,3,2,1]})
df2=pd.DataFrame({'a':[2,4,2],'b':[1,2,3],'c':[6,5,4]})
for x in df2.a:
if x in df1.a:
df1.drop(df1[df1.a==x].index[0], inplace=True)
print(df1)

TA貢獻1775條經驗 獲得超11個贊
嘗試這個:
import pandas as pd
df1=pd.DataFrame({'a':[1,1,2,3,4,4],'b':[1,2,3,4,5,6],'c':[6,5,4,3,2,1]})
df2=pd.DataFrame({'a':[2,4,2],'b':[1,2,3],'c':[6,5,4]})
df2a = df2['a'].tolist()
def remove_df2_dup(x):
if x in df2a:
df2a.remove(x)
return False
return True
df1[df1.a.apply(remove_df2_dup)]
它從 中創建一個列表df2['a'],然后根據 中的每個值檢查該列表df1['a'],每次在中匹配時從列表中刪除值df1
添加回答
舉報