如何进行条件合并 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。
我有两个不同的数据框,如下所示。
这是 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。