2016-08-09 3 views
-2

두 개의 Excel 파일이 있습니다. 두 파일 모두 Customer_Name과 Customer_No라는 두 개의 공통 열을 가지고 있습니다. 첫 번째 엑셀 파일은 약 800k 행을 가지고 있고 두 번째 파일은 460만을 가지고 있습니다. 두 파일에 공통 데이터가있는 데이터 프레임을 얻고 싶습니다. 즉, Customer_Name과 Customer_No가 모두있는 첫 번째 파일에서 행을 얻고 싶습니다. 두 번째 파일에 있습니다. 나는 .isin을 사용하여 시도했지만 지금까지 단 하나의 변수 (Column) 만 사용하는 예제를 발견했습니다. 미리 감사드립니다!팬더에서 두 개의 Excel 파일을 비교하고 두 개의 열에 같은 값을 가진 행을 반환합니다.

답변

2

사용 merge : 당신이있는 경우

df = pd.merge(df1, df2, on=['Customer_Name','Customer_No']) 

다른 열 이름이 left_onright_on 사용

df = pd.merge(df1, 
       df2, 
       left_on=['Customer_Name','Customer_No'], 
       right_on=['Customer_head','Customer_Id']) 
+0

답안을 편집하고 있으므로 확인하십시오. – jezrael

+0

내 대답이 도움이 되었다면 [수락] (http://meta.stackexchange.com/a/5235/295067)을 잊지 마세요. 감사. – jezrael

+0

하지만 대신 KeyError가 나타납니다. 열의 데이터 유형을 확인하고 그 열의 유형도 동일하게 만들었습니다. : – Ruffy26

0

IIUC을하고 두 번째 파일에서 여분의 열을 필요로하지 않습니다 - 그것은 사용됩니다 가입하기 만하면 다음과 같이 할 수 있습니다.

common_cols = ['Customer_Name','Customer_No'] 

df = (pd.read_excel(filename1) 
     .join(pd.read_excel(filename2, usecols=common_cols), 
          on=common_cols)) 
0

본인은 직접적인 방법은 다음과 같이 될 것이라고 생각 : 필요한 경우 DF의 결과에 [인덱스, 행]을 추가처럼

여기
df_file1 = pd.read_csv(file1, index_col) # set Customer_No 
df_file2 = pd.read_csv(file2, index_col) # set Customer_No 
for index, row in df_file1.iterrows(): 
    if row.get_value('Customer_name) in df_file2['Customer_name'].values: 

당신은 단순히 정수로, 계산 또는 일부 복잡한 작업을 생성 할 수 있습니다.

관련 문제