2017-02-02 5 views
0

다음 문제에 도움을 주셔서 감사합니다. 나는이 문제를 해결하기 위해 팬더 라이브러리를 사용하려고합니다. 가능한 경우 팬더를 사용하여 어떻게 이것을 할 수 있는지 설명 할 수 있다면 감사하겠습니다.)Python Pandas에서 Excel의 VLOOKUP을 복제

  • 1은 A 팬더 데이터 프레임
  • 2에 파일 '전')를 찾아 변환 :

    Before

    과 :

    나는 다음과 같은 엑셀 파일을 먹고 싶어 'Site'열의 텍스트 이 텍스트가 '도메인'열의 문자열 내에 표시되면 '출력'아래의 '소유자'열의 값을 반환하십시오.

  • 3) 결과는 'After'파일과 유사해야합니다. CSV 형식으로 다시 변환하고 싶습니다.

    After

그래서 본질적으로 이것은 우리가 '사이트'와 '도메인'열 사이를 찾고이 아니 정확히 일치 제외하고, 엑셀 VLOOKUP 운동과 유사하다.

나는 이것을 Excel에서 이미 시도했지만 100,000 개가 넘는 행을보고 있으며 1000 개가 넘는 사이트와 비교 한 결과 충돌이 우수합니다.

'소유자'로 분류하려는 도메인 목록과 동일한 파일에 조회 목록을 저장하려고했습니다. 조회 목록을 별도의 데이터 프레임에 저장하는 등의 작업을 수행하는 것이 훨씬 좋은 방법이라면 괜찮습니다.

사전 도움을 주셔서 감사합니다. 정말 고맙습니다.

콜린

+1

가능한 복제본 : http://stackoverflow.com/questions/38291908/excel-vlookup-equivalent-in-pandas –

+1

[vandup in pandas in join]의 가능한 복제본 (http://stackoverflow.com/questions/25493625)/vlookup-in-pandas-using-join) – Boud

답변

0

은 내가 OP의 질문 dataframes 사이의 정확한 조회 (map) 또는 조회를 처리하거나 코멘트에 링크 된 솔루션 다소 다릅니다 생각합니다. 여기에는 하나의 데이터 프레임과 일치하는 부분이 있습니다.

import pandas as pd 
import numpy as np 

df = pd.ExcelFile('data.xlsx').parse(0) 
df = df.astype(str) 
df['Test'] = df.apply(lambda x: x['Site'] in x['Domain'],axis=1) 
df['Output'] = np.where(df['Test']==True, df['Owner'], '') 
df 

lambdain 테스트가 반복 Test에 부울을 리턴하도록, 축 양단에인가되도록한다. 이것은 Owner을 찾고 Output에 배치하는 규칙으로 작용합니다.

+0

감사합니다. joshi123. 나는 위의 시도하고 '출력'열은 더 큰 데이터 집합에 채워지지 않습니다. 내가 틀릴 수도 있지만 위의 경우에만 같은 행에있는 '도메인'열 ('TRUE')에서 '사이트'문자열을 검색하는 한 번에 하나의 행을 찾습니다 생각하고 열의 문자열을 반환합니다 '소유자'. 그러나, 내가하고 싶은 일은 첫 번째 행의 '도메인'문자열을보고 '사이트'열의 모든 문자열을 스캔하여 부분 일치를 찾습니다. 이것을 달성하기 위해 위의 사항을 수정할 수 있습니까? 감사합니다 –

+0

나는 데이터의 내 더미 발췌 부분에, 나는 부분적으로 같은 줄에 나타나는 '도메인'과 일치하는 '사이트'를 갖는 문제를 지나치게 단순화했다고 덧붙여 야합니다. –

관련 문제