Consider the following query:
SELECT *
FROM
table_1
CROSS JOIN
table_2
WHERE
table_1.f1 >= table_2.f1001
AND (
table_1.f1 < table_2.f1002
OR table_2.f1002 IS NULL
)
Is it possible to implement this using Pandas, for example with pd.merge(how='cross')? Suppose we have two dataframes table_1 and table_1, and we need to do a cross join according to the conditions below:
table_1.f1 >= table_2.f1001 AND (table_1.f1 < table_2.f1002 OR table_2.f1002 IS NULL)
You can do like
out = pd.merge(table_1, table_2,how='cross')
out = out[out['f1'].ge(out['f1001']) & (out['f1'].lt(out['f1001']) | table_2['f1002'].isna())]
Use merge and query:
out = pd.merge(table_1, table_2, how='cross') \
.query("(f1 >= f1001) & ((f1 < f1002) | f1002.isna())")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With