2017-01-20 5 views
0

1つのExcelファイルにマージする必要があるExcelファイルが4つあります。 ID、頭文字、年齢、性別を含む人口統計ファイル。 ID、イニシャルテスト名、テスト日付、テスト値を含むラボファイル。 ID、頭文字、病状、開始日および終了日を含む医療履歴。 ID、頭文字、薬物名、用量、頻度、開始日および終了日を含む投薬。さまざまな行の複数のExcelファイルをパンダの1つの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 
関連する問題