3 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以轉(zhuǎn)換為frozenset并使用pd.DataFrame.duplicated。
res = df[~df[['Name1', 'Name2']].apply(frozenset, axis=1).duplicated()]
print(res)
Name1 Name2 Value
0 Juan Ale 1
frozenset是必需的,而不是set因?yàn)閐uplicated使用哈希檢查重復(fù)項(xiàng)。
列的縮放比行的縮放更好。對(duì)于大量行,請(qǐng)使用@Wen的基于排序的算法。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
通過(guò)np.sort與duplicated
df[pd.DataFrame(np.sort(df[['Name1','Name2']].values,1)).duplicated()]
Out[614]:
Name1 Name2 Value
1 Ale Juan 1
性能
df=pd.concat([df]*100000)
%timeit df[pd.DataFrame(np.sort(df[['Name1','Name2']].values,1)).duplicated()]
10 loops, best of 3: 69.3 ms per loop
%timeit df[~df[['Name1', 'Name2']].apply(frozenset, axis=1).duplicated()]
1 loop, best of 3: 3.72 s per loop
添加回答
舉報(bào)