2017-09-09 3 views
0

저는 파이썬에서 매우 새로운 것으로, 다음과 같은 문제가 있습니다.다른 df 열에서 같은 멤버를 선택하기위한 파이썬리스트 comprehensions/loop

저는 혼자서 해결하기가 어려운 두 가지 질문을 가지고 있습니다.

두 개의 팬더 데이터 프레임이 있고 두 개의 열을 추출 할 수 있다고 가정합니다. col1이라는 한 열에는 'QUENTIN TARANTINO'또는 'Tarantino Quentin'과 같은 형식으로 같은 열을 따라 반복 할 수있는 제목의 이름이 있습니다. 다른 컬럼 col2에는 'TARANTINO, QUENTIN'또는 'Tarantino, Quentin'과 같은 형식의 항목이 있습니다.이 항목 역시 반복 할 수 있습니다.

분명히 'TARANTINO, QUENTIN'또는 'Tarantino, Quentin'은 같은 제목이지만 다른 대상입니다.

동일한 제목에 단 하나의 레이블이 있도록이 두 열을 하나의 열에 '병합'하고 싶습니다. 목록 작성 (또는 반복)을 사용하여 이름 ('TARANTINO, QUENTIN')과 그 수를 모두보고하도록하려면 어떻게해야합니까?

col1 = ['QUENTIN TARANTINO', 'BARACK OBAMA', 'QUENTIN TARANTINO', 'CHARLIE CHAPLIN', 'JAMES LEBRON', 'KOBE BRYANT', 'Philippe Wain', 'LE CAM ALBERT', 'ANDREW ROBERTS', 'Obama Barack', 'tarantino quentin'] 

col2 = ['OBAMA, BARACK', 'CHAIN, GEORGE', 'Phylo, SOPY', 'Losan, Santos'] 

답변

1

먼저 목록에있는 모든 요소에 더 낮은 적용해야로서 취할 뒤집기를 돌리면 다음을 실행합니다.

열이 반전되는 것을 제거합니다. 그것이 무엇을 위해

, COL 이상

  1. 으로 반복.
    1. 각 이름의 반대 목록을 생성하십시오.
    2. 결합 된 반대 이름이 이미 존재하는지 확인하십시오. 이 경우
      1. , 그것은 for 루프의 대상이되어야한다, 그래서 반복자를 반환 목록

reversed(list)에서 제거합니다. rev은 다음 단계에서 쉽게 비교할 수 있도록 반전 된 이름의 사본을 보관합니다.

+0

우 오오 : 이것은 아주 멋집니다! – 1dre

+0

내게 (학습자) 레브가 만드는 점을 설명해 주시겠습니까? 그리고 .join (rev)?이 문제에 당신을 괴롭히는 미안합니다 – 1dre

+0

감사합니다 @notcompletelyrational, upvote 당신에게 준 도움에 대 한 내 대답 –

1

이 사용하는 것입니다이 문제를 해결하는 가장 간단한 방법 설정이 시도 : 당신이 Espoir의 대답에 추가

col = list(set([x.lower().replace(', ',' ') for x in col1]+[x.lower().replace(', ',' ') for x in col2])) 
+0

도움 주셔서 감사하지만 내 질문에 대답하지 않습니다. 이렇게하면 N1 + N2 요소가있는 새로운 열이 만들어집니다. 대신 반복되는 요소가없는 새로운 열이 필요합니다. 건배 – 1dre

+0

정확히 : col1의 'QUENTIN TARANTINO'와 'Tarantino Quentin'은 같은 사람을 대표하며, 새 항목에서 col2의 'TARANTINO, QUENTIN'뿐만 아니라 동일한 대상으로 간주하기를 바랍니다. – 1dre

+0

예하지만 'quentin tarantino '와'tarantino quentin '은 여전히 ​​같은 주제이지만 다른 것으로 간주됩니다. 내가 잘못? – 1dre

관련 문제