한 가지 간단한 방법은 일치 할 수 있도록 공통의 형식으로 모두 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 Wambach
과 Aaron Wambach
이라는 두 명의 회원이있는 경우 모두 a. wambach
처럼 보입니다. 한 데이터 프레임이 m.a. wambach
및 a.k. wambach
과 같이 이름에 다른 이니셜을 사용하여 구별하려고하면 순 진 일치가 실패합니다. 이것을 처리하는 방법은 데이터의 크기에 달려 있습니다. 아마도 대부분의 플레이어를이 방법으로 비교해 볼 수 있고, 누가 떨어 뜨린지를 볼 수 있고, 그들로부터 커스텀 코드를 작성할 수 있습니다.
[Pandas에서 두 데이터 세트 병합] 가능한 복제본 (https://stackoverflow.com/questions/43909479/merge-two-datasets-in-pandas) – thatrockbottomprogrammer
부분 일치에 따라 병합하기가 쉽지 않습니다. – Dark