如何进行条件合并 Pandas

How to do conditional merge Pandas

我有两个不同的数据框,如下所示。

这是 tel_times 数据框

这是 maint_comp1 数据框。

现在,我已经使用 merge.

连接了这两个数据框
maint_tel_comp1 = pd.merge(tel_times, maint_comp1,  how='inner', left_on=['machineID','datetime_tel'], right_on = ['machineID','datetime_maint'])

结果是

我想对我拥有的两个日期时间列应用条件。

像这样,

maint_tel_comp1 = (telemetry_times.join(maint_comp1, 
                                        ((telemetry_times ['machineID']== maint_comp1['machineID']) 
                                         & (telemetry_times ['datetime_tel'] > maint_comp1['datetime_maint']) 
                                         & ( maint_comp1['comp1sum'] == '1')))

这是在 PySpark 中,但我想在 Pandas 中完成。

我这样做是为了遵循相同的条件。

maint_tel_comp1[maint_tel_comp1['datetime_tel'] > maint_tel_comp1['datetime_maint']]

但它给出了一个空数据框。

我相信你想要的是:

maint_tel_comp1 = tel_times.merge(maint_comp1, on='machineID', how='inner')
maint_tel_comp1[maint_tel_comp1['datetime_tel'].gt(maint_tel_comp1['datetime_maint'])]

问题是您的合并也在确保 datetime_tel == datetime_maint,因此您的条件是返回一个空的 DataFrame。