2017-04-20 1 views
1

팬더 drop_duplicates()을 사용하여 값이 역순 일 때 행이 중복됨을 인식하는 방법을 찾고 있습니다.팬더 드롭 중복; 값이 역순 일 때

고객이 사과와 바나나를 모두 구매하는 거래를 찾으려고하지만 데이터 수집 순서에 따라 상품이 반전되었을 수 있습니다. 즉, 전체 주문으로 결합하면 트랜잭션은 동일한 항목으로 구성되기 때문에 복제본으로 간주됩니다.

Item1 Item2 
Apple Banana 
Banana Apple 

답변

3

먼저 applysorted 가진 행을 기준으로 정렬 한 후 drop_duplicates : numpy.sort와 또 다른 솔루션

df = df.apply(sorted, axis=1).drop_duplicates() 
print (df) 
    Item1 Item2 
0 Apple Banana 

#if need specify columns 
cols = ['Item1','Item2'] 
df[cols] = df[cols].apply(sorted, axis=1) 
df = df.drop_duplicates(subset=cols) 
print (df) 
    Item1 Item2 
0 Apple Banana 

나는 다음과 중복으로 인식 할 DataFrame 생성자 :

df = pd.DataFrame(np.sort(df.values, axis=1), index=df.index, columns=df.columns) 
     .drop_duplicates() 
print (df) 
    Item1 Item2 
0 Apple Banana 
+0

빠른 응답을 보내 주셔서 감사합니다. 나는 그것이 간단했다라고 생각했기 때문에 이것은 나를 미치게했다. 나는 세 번째 옵션이 가장 좋습니다. 고맙습니다! – Carrie

+0

예, 'numpy'때문에 가장 빠릅니다. 다행이 당신을 도울 수 있습니다! – jezrael

+0

마지막 옵션은 매우 좋습니다! – MaxU