臨床データを分析し、別のデータフレームの情報に基づいて1つのデータフレームの情報をフィルタリングしようとしています。パンダ:複数のデータフレームの情報に基づいたデータのフィルタリング
データフレームリストの一つは、患者が治療
dfTreatments = pd.DataFrame({'PatientID': [4,4,4,9,9,9,11,11,11], 'TreatmentDate': ['2016-01-01', '2016-01-15', '2016-03-25','2016-01-01','2016-01-15','2016-01-29','2016-01-01','2016-03-15','2016-03-25']})
dfTreatments['TreatmentDate'] = pd.to_datetime(dfTreatments['TreatmentDate'])
PatientID TreatmentDate
0 4 2016-01-01
1 4 2016-01-15
2 4 2016-03-25
3 9 2016-01-01
4 9 2016-01-15
5 9 2016-01-29
6 11 2016-01-01
7 11 2016-03-15
8 11 2016-03-25
や他のデータフレームリストの中に来るという日付は、患者が合併症で病院を訪れることにさかのぼります。私たちの研究では
dfHospitalVisits = pd.DataFrame({'PatientID': [4,4,9,11], 'HospitalVisitDate': ['2016-01-14','2016-03-10','2016-01-28','2016-01-03']})
dfHospitalVisits['HospitalVisitDate'] = pd.to_datetime(dfHospitalVisits['HospitalVisitDate'])
HospitalVisitDate PatientID
0 2016-01-14 4
1 2016-03-10 4
2 2016-01-28 9
3 2016-01-03 11
、私たちは、患者は20日の治療を受けていない場合は、当社の分析から通院を除外したいです。我々はの20日の隙間の前の最後の治療でそれらを除外し始める。例:2016年1月15日以降の患者4の病院訪問は除外します。
この例では、患者4の第二病院訪問と患者11の病院訪問がdfHospitalVisitsから除去されます。
編集:@Merlin、これまでのところ、私はdfTreatments.groupby('PatientID')['TreatmentDate'].diff()
を使用して、治療日のギャップを患者別に分類しました。私が立ち往生している部分は、dfHospitalVisitsの値を除外するために治療日数の差を20を超える方法を使用する方法がわからないということです。
あなたがしようとしているものをご提示ください。 – Merlin
これはアイデアのために見てください。 http://chrisalbon.com/python/pandas_join_merge_dataframe.html – Merlin
提供されているリンクを確認する必要があります。 SOはコーディングサービスではありません – Merlin