2017-01-20 1 views
0

하나의 Excel 파일로 병합해야하는 4 개의 Excel 파일이 있습니다. ID, 이니셜, 연령 및 성별이 포함 된 인구 통계 파일입니다. ID, 머리 글자 테스트 이름, 테스트 날짜 및 테스트 값이 포함 된 실험실 파일입니다. ID, 이니셜, 의료 조건, 시작 및 중지 날짜가 포함 된 병력. ID, 이니셜, 약품 이름, 복용량, 빈도, 시작 및 종료 날짜가 포함 된 약물.다양한 행이있는 여러 Excel 파일을 팬더의 하나의 Excel 파일로 병합

환자가 50 명 있습니다. 인구 통계 파일에는 50 명의 환자가 50 줄로 구성되어 있습니다. 나머지 파일에는 50 명의 환자가 있지만 100-400 개의 행이 있습니다. 각 환자마다 여러 개의 실험실 테스트 또는 여러 개의 약이 있기 때문입니다.

팬더를 병합 할 때 잘못된 환자에게 엔티티가 중복되거나 지정되어 있습니다. 문제는 실험실 테스트보다 더 많은 약을 투여받는 환자의 경우 실험실 테스트에서 복제물을 공백으로 대체해야한다는 것입니다.

이 단축 표현이다 : 나는이 결과를 선호 Pandas merge result

: 당신은이 결과를 얻을

import pandas as pd 
lab = pd.read_excel('data/data.xlsx', sheetname='lab') 
drugs = pd.read_excel('data/data.xlsx', sheetname='drugs') 
merged_data = pd.merge(drugs, lab, on='ID', how='left') 
merged_data.to_excel('merged_data.xls') 

Prefered output

+2

질문에 코드와 결과를 입력하십시오. –

+2

[mcve] – MYGz

+1

@ DannyKofi-Armah 만들기 질문에 따라 질문을 업데이트하십시오. 의견은 질문을 수정하기위한 것이 아니며 읽을 수 없으며 누군가가이 방식으로 질문을 읽고 답변해야 할 것 같지 않습니다. – Boud

답변

1

groupby()cumcount() 사용을 고려하고 모두 가입을 그 입력란 : ID :

drugs['GrpCount'] = (drugs.groupby(['ID'])).cumcount() 

lab['GrpCount'] = (lab.groupby(['ID'])).cumcount() 

merged_data = pd.merge(drugs, lab, on=['ID', 'GrpCount'], how='left').drop(['GrpCount'], axis=1) 

#  ID Initials_x      Drug Name   Frequency   Route Start Date  End Date Initials_y     Name Result Date Result 
# 0 1   AB      AMPICLOX    NaN   Oral 21-Jun-2016 21-Jun-2016   AB Rapid Diagnostic Test 30-May-16 Abnormal 
# 1 1   AB     CIPROFLOXACIN    Daily   Oral 30-May-2016 03-Jun-2016   AB    Microscopy 30-May-16 Normal 
# 2 1   AB  Ibuprofen Tablet 400 mg Two Times a Day   Oral 06-Oct-2016 10-Oct-2016  NaN      NaN   NaN  NaN 
# 3 1   AB      COARTEM    NaN   Oral 17-Jun-2016 17-Jun-2016  NaN      NaN   NaN  NaN 
# 4 1   AB   INJECTABLE ARTESUNATE   12 Hourly Intravenous 01-Jun-2016 02-Jun-2016  NaN      NaN   NaN  NaN 
# 5 1   AB     COTRIMOXAZOLE    Daily   Oral 30-May-2016 12-Jun-2016  NaN      NaN   NaN  NaN 
# 6 1   AB     METRONIDAZOLE Two Times a Day   Oral 30-May-2016 03-Jun-2016  NaN      NaN   NaN  NaN 
# 7 2   SS      GENTAMICIN    Daily Intravenous 04-Jun-2016 04-Jun-2016   SS    Microscopy 6-Jun-16 Abnormal 
# 8 2   SS     METRONIDAZOLE   8 Hourly Intravenous 04-Jun-2016 06-Jun-2016   SS Complete Blood Count 6-Oct-16 Recorded 
# 9 2   SS Oral Rehydration Salts Powder    PRN   Oral 06-Jun-2016 06-Jun-2016  NaN      NaN   NaN  NaN 
# 10 2   SS       ZINC   8 Hourly   Oral 06-Jun-2016 06-Jun-2016  NaN      NaN   NaN  NaN 
관련 문제