Compare Multiple Columns to Get Rows that are Different in Two Pandas Dataframes

后端 未结 4 785
悲哀的现实
悲哀的现实 2021-01-14 16:38

I have two dataframes:

df1=
    A    B   C
0   A0   B0  C0
1   A1   B1  C1
2   A2   B2  C2

df2=
    A    B   C
0   A2   B2  C10
1   A1   B3  C11
2   A9   B4         


        
4条回答
  •  深忆病人
    2021-01-14 17:23

    Ideally, one would like to be able to just use ~df1[COLS].isin(df2[COLS]) as a mask, but this requires index labels to match (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isin.html)

    Here is a succinct form that uses .isin but converts the second DataFrame to a dict so that index labels don't need to match:

    COLS = ['A', 'B'] # or whichever columns to use for comparison
    
    df1[~df1[COLS].isin(df2[COLS].to_dict(
        orient='list')).all(axis=1)]
    

提交回复
热议问题