【发布时间】:2020-06-26 20:03:13
【问题描述】:
我有两个数据集:
- 一个包含过去 10 年颁发的房屋能源证书,其中包含房屋 ID 和颁发日期。一所房子可以颁发更多证书,因为他们可以续签。
- 另一个包含过去 10 年的所有房屋交易 和 ID(与第一个数据集中的 id 相同)
我已经使用
合并了它们mergeALL= pd.merge(mergeTranDwelling,EnergySimple, left_on=['matrikkel2019', "bygningsnr"], right_on=['matrikkel2019', 'Bygningsnummer'], how='inner')
然后我得到这样的东西(数据框片段):
transaction_id address_id official_date certificate issued_date
83866285 1157600091 2016-05-25 A2012-278940 17.12.2012 17:44:17
83866285 1157600091 2016-05-25 A2012-278941 17.12.2012 17:48:35
83866285 1157600091 2016-05-25 A2016-638538 22.02.2016 10:16:12
83866285 1157600091 2016-05-25 A2016-638577 22.02.2016 10:22:45
83866285 1157600091 2016-05-25 A2019-1065662 21.10.2019 15:39:30
因为每个房屋可以有多个能源证书值,所以每笔交易都可以获得多个附在其上的证书。我希望每个 transaction_id 拥有最接近但在 official_date 之前的 issued_date 证书。在上述情况下,我想删除此 tranasction_id 上的所有证书,除了:
83866285 1157600091 2016-05-25 A2016-638577 22.02.2016 10:22:45
我已尝试使用此解决方案:https://stackoverflow.com/a/60434720/12939497 但我必须合并两列(matrikkel2019,bygningsr)上的数据集,因此我不能使用merge.asof。
我也愿意以另一种方式进行合并(这是关于同一问题的另一个问题:Merging two DataFrames (Datasets) on a specific ID column but with Date condition)
【问题讨论】:
-
检查下面的答案,如果不是你想要的,请告诉我..
标签: python pandas dataframe merge