如何在pandas中,找出兩個dataframe不同的行?三杉2019-05-04 04:20:10

可以自己define 一個function:

# Define the anti-join

def anti_join(x, y, on):

“”“Return rows in x which are not present in y”“”

ans = pd。merge(left=x, right=y, how=‘left’, indicator=True, on=on)

ans = ans。loc[ans。_merge == ‘left_only’, :]。drop(columns=‘_merge’)

return ans

如何在pandas中,找出兩個dataframe不同的行?知乎使用者2019-05-10 19:12:46

df。set_index([‘title’,‘name’])[~df。set_index([‘title’,‘name’])。isin(df2。set_index([‘title’,‘name’]))。all(1)]。reset_index()

如何在pandas中,找出兩個dataframe不同的行?master蘇2019-05-31 07:37:01

左右關聯,關聯結果為空的就是答案,沒有內建函式,需要拆解步驟。

如何在pandas中,找出兩個dataframe不同的行?Tony Zhang2020-08-12 14:34:47

df1 = pd。concat([df1, df2])

df1。drop_duplicates(keep=False, inplace=True)

但是如果列裡面元素有list的話會報錯——TypeError: unhashable type: ‘list’。

如果確定沒有重複元素,可以轉成tuple,最後再轉成list

df[‘text’] = df[‘text’]。apply(lambda x: tuple(x))

有重複元素就不知道改怎麼辦了。

如何在pandas中,找出兩個dataframe不同的行?知乎使用者2021-03-09 18:03:22

可以參考我的答案,程式碼如下:

slice_lable

=

df1

[[

‘title’

‘name’

]]

apply

tuple

axis

=

1

isin

df2

[[

‘title’

‘name’

]]

apply

tuple

axis

=

1

to_list

()

# 在 df1 中存在,df2 中不存在的

df1

~

slice_lable

可以看我的案例解析:

Pandas 根據多列判斷不在其他表的資料