我有兩個資料框:
df0 = pd.DataFrame({'a':[9,8,7,6]},index=[0,1,2,4])
df1 = pd.DataFrame({'b':[5,6,4,7]},index=[2,4,6,8])
我的目標是獲取df0索引未出現在df1. 我執行了左排除連接(
我做:
res = \
df0.merge(
df1,how='left',left_index=True, right_index=True, indicator=True
).query('_merge=="left_only"').drop(['b','_merge'],axis=1)
它回傳所需的資料幀,但似乎有點矯枉過正。我也考慮過使用filter:
df0.filter(items=df1.index,axis=0)
但這會回傳df0我想要洗掉的行,而不是我想要保留的行。
有沒有比上面顯示的左排除連接更簡單的方法?
uj5u.com熱心網友回復:
Index.isin通過~in與倒置掩碼一起使用boolean indexing:
res = df0[~df0.index.isin(df1.index)]
print (res)
a
0 9
1 8
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/383539.html
下一篇:f字串格式:顯示數字符號?
