2016-08-03 3 views
2

나는 d1과 d2를 가지고 있으며 두 개를 ID 열로 병합하려고합니다. 그러나 ID와 ID2는 정확히 일치하지 않습니다. 대신, ID는 ID2의 처음 8 자리입니다 (때로는 처음 6 자리 또는 때로는 1 또는 2 자리수 다를 수 있음).정규 표현식 또는 퍼지 일치로 데이터 프레임 병합

ID2를 사전 처리하여 처음 8 자리 만 유지할 수 있다는 것을 알고 있습니다. 그러나 모든 상황을 처리 할 수는 없습니다.

퍼지 매치를 위해 정규식을 병합하는 고급 방법이 있습니까? 첫 6 자리가 일치하면 병합 하시겠습니까? 나는이 같은 문제와 유일한 해결책이 있었다

d1=pd.DataFrame({'ID':['00846U10','01381710'], 
         'count':[100,200]}) 
d2=pd.DataFrame({'ID2':['00846U101','013817101','02376R102'], 
       'value':[1,5,6]}) 
+0

전처리 ID 및 ID2는 6 자까지만 유지하므로 그다지 효과가 없습니다 !! –

+0

@GauravDhama 그것은 내 모든 상황을 다루지 않을 것입니다. 질문을 – Lisa

+0

업데이트했습니다. ID와 ID2를 모두 6 자릿수로 분할하고 일치하는 항목이 있으면 두 개의 데이터 프레임을 병합 하시겠습니까? –

답변

1

친구는 다른 파이썬 패키지를 사용하는 것입니다. 예를 들어 fuzzywuzzy을 살펴보십시오. 아주 좋아.

d1의 모든 행에 대해 가장 높은 퍼지 매칭 점수를 갖는 d2의 행을 찾습니다.

+0

감사합니다. @Noobie 샘플 코드를 게시 하시겠습니까? – Lisa

+0

여기를보세요 http://stackoverflow.com/questions/37979167/how-to-parallelize-many-fuzzy-string-comparisons-using-apply-in-pandas. 만족 스럽다면 받아 들일 수 있습니다. 감사! –