【问题标题】:Using query to combine pandas dataframes使用查询组合熊猫数据框
【发布时间】:2021-10-25 16:30:04
【问题描述】:

我正在解决一个问题,我需要将两个数据帧合并在一起并应用类似于 SQL 中的“where”子句的条件。首先,我有两个数据框:

Member_Timepoints = pd.DataFrame(list(zip([1001,1001,1002,1003],['2016-09-02','2018-01-30','2018-03-17','2019-01-10'])),columns = ['Member_ID','Discharge_Date'])

Enrollment_Information = pd.DataFrame(list(zip([1001,1001,1002,1003,1003,1003,1003], ['2015-07-01','2018-01-01','2018-03-01','2017-11-01','2018-08-01','2019-07-01','2019-09-01'], ['2018-01-01','2262-04-11','2018-08-01','2018-08-01','2019-06-01','2019-08-01','2262-04-11'])), columns = ['Member_ID','Coverage_Effective_Date','Coverage_Cancel_Date'])

Member_Timepoints['Discharge_Date'] = pd.to_datetime(Member_Timepoints['Discharge_Date'])
Enrollment_Information['Coverage_Effective_Date'] = pd.to_datetime(Enrollment_Information['Coverage_Effective_Date'])
Enrollment_Information['Coverage_Cancel_Date'] = pd.to_datetime(Enrollment_Information['Coverage_Cancel_Date'])

我需要在“Member_ID”上将这些数据框连接在一起,并希望使用以下条件作为过滤条件:

Coverage_Effective_Date = Discharge_Date + 30

我推荐Join pandas dataframes based on different conditions 开始,但是,我仍然在努力将数据帧与上述条件合并在一起。

谁能帮我在 Pandas 中使用查询来实现这一点?

【问题讨论】:

    标签: sql pandas join merge


    【解决方案1】:

    在这种情况下,我首先看到的是数据类型和整数加法。您不能添加不同的数据类型。你应该使用timedelta:

    from datetime import timedelta
    some_date_type + timedelta(days=30)
    

    查询部分合并后可以使用.loc

    data = Enrollment_Information.merge(Member_Timepoints, on=['Member_ID'])
    data.loc[(data['Coverage_Cancel_Date'] <= data['Discharge_Date'] ) &
             (data['Coverage_Cancel_Date'] >= data['Discharge_Date']+timedelta(days=30)) ]
    
    

    【讨论】:

    • 这是一个条件,不是代码的一部分。感谢您的建议和回答:)
    • 你说得对,我刚刚注意到了。我在想你在你的代码中使用条件。我修好了:)
    猜你喜欢
    • 2016-10-03
    • 2020-11-10
    • 2017-02-22
    • 1970-01-01
    • 2023-02-02
    • 2020-04-21
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多