2017-10-20 2 views
0

나는 Kaggle 데이터 세트 "European Soccer Database"를 가지고 놀고 다른 FIFA18 데이터 세트와 결합하려고합니다.팬더의 특정 열을 기준으로 두 개의 데이터 세트를 병합하는 방법

제 문제는이 두 데이터 세트의 이름 - 열이 다른 형식을 사용하고 있다는 것입니다.

예를 들어 : "리오넬 메시"하나 개의 데이터 세트와 다른는 "L. 메시"입니다

나는 모든 행에 대한 소문자 버전 "리오넬 메시"로 "L. 메시"를 변환하는 것

데이터 세트에서.

이 문제를 해결하는 가장 지적인 방법은 무엇입니까?

+0

[Pandas에서 두 데이터 세트 병합] 가능한 복제본 (https://stackoverflow.com/questions/43909479/merge-two-datasets-in-pandas) – thatrockbottomprogrammer

+0

부분 일치에 따라 병합하기가 쉽지 않습니다. – Dark

답변

0

한 가지 간단한 방법은 일치 할 수 있도록 공통의 형식으로 모두 dataframes의 이름을 변환하는 것입니다. *의이 df1 이름이 L. Messi 형식과 df2 이름에있는 lionel messi 형식으로되어 있다고 가정 해 봅시다. 일반적인 형식은 어떻게 생겼습니까? 여러 가지 선택 사항이 있지만 하나의 옵션은 모두 소문자이며 첫 번째 이니셜 뒤에 마침표 (l. messi)가옵니다.

df1 = pd.DataFrame({'names': ['L. Messi'], 'x': [1]}) 
df2 = pd.DataFrame({'names': ['lionel messi'], 'y': [2]}) 

df1.names = df1.names.str.lower() 
df2.names = df2.names.apply(lambda n: n[0] + '.' + n[n.find(' '):]) 

df = df1.merge(df2, left_on='names', right_on='names') 

* 참고 :이 방법은이 방법으로 "정합 가능한"인 이름에 전적으로 의존한다. 이 간단한 접근 방식이 실패 할 수있는 경우가 많이 있습니다. 팀에 Abby WambachAaron Wambach이라는 두 명의 회원이있는 경우 모두 a. wambach처럼 보입니다. 한 데이터 프레임이 m.a. wambacha.k. wambach과 같이 이름에 다른 이니셜을 사용하여 구별하려고하면 순 진 일치가 실패합니다. 이것을 처리하는 방법은 데이터의 크기에 달려 있습니다. 아마도 대부분의 플레이어를이 방법으로 비교해 볼 수 있고, 누가 떨어 뜨린지를 볼 수 있고, 그들로부터 커스텀 코드를 작성할 수 있습니다.

관련 문제