考慮以下查詢:
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
)
是否可以使用 Pandas 來實作這一點,例如使用pd.merge(how='cross')? 假設我們有兩個資料框table_1和table_1,我們需要根據以下條件進行交叉連接:
table_1.f1 >= table_2.f1001 AND (table_1.f1 < table_2.f1002 OR table_2.f1002 IS NULL)
uj5u.com熱心網友回復:
你可以這樣做
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())]
uj5u.com熱心網友回復:
使用merge和query:
out = pd.merge(table_1, table_2, how='cross') \
.query("(f1 >= f1001) & ((f1 < f1002) | f1002.isna())")
uj5u.com熱心網友回復:
df.merge(df, on='cid', suffixes=('1','2')).query('qid1 < qid2')
類似的東西,query之后使用merge
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468513.html
下一篇:資料框列:查找(累積)區域最大值
