第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在左連接中使用類似 SQL 的連接和過濾器 (Between) 合并表

在左連接中使用類似 SQL 的連接和過濾器 (Between) 合并表

桃花長相依 2021-11-02 17:03:15
所以我有這兩個(gè)表,我想在其中做 aleft join并過濾我的date列來自和列df1之間的行。 fromtodf2注意row 6哪個(gè)沒有ClockInDate哪個(gè)最終會(huì)導(dǎo)致問題。df1:  Company Resource ClockInDate0       A     ResA  2019-02-091       A     ResB  2019-02-092       A     ResC  2019-02-093       B     ResD  2019-02-094       B     ResE  2019-02-095       B     ResF  2019-02-096       B     ResG         NaTdf2:  Company Resource EffectiveFrom EffectiveTo0       A     ResA    2018-01-01  2018-12-311       A     ResA    2019-01-01  2099-12-312       A     ResB    2018-01-01  2018-12-313       A     ResB    2019-01-01  2099-12-314       B     ResE    2018-01-01  2018-12-315       B     ResE    2019-01-01  2099-12-316       B     ResF    2018-01-01  2018-12-317       B     ResF    2019-01-01  2099-12-318       B     ResG    2018-01-01  2018-12-319       B     ResG    2019-01-01  2099-12-31我想我可以left merge在熊貓中做到這一點(diǎn),然后應(yīng)用過濾器。但它給出了不同的輸出。因此,在 SQL 中,您可以O(shè)N像這樣在子句中包含此過濾器,但這與在WHERE子句中的 join 之后包含此過濾器不同:       SELECT t1.company,              t1.resource,              t2.company,              t2.resource,              t1.ClockInDate,              t2.EffectiveFrom,              t2.EffectiveTo       FROM table1 t1       LEFT JOIN table2 t2 ON t1.resource = t2.resource                            AND t1.company = t2.company                            AND t1.ClockInDate BETWEEN t2.EffectiveFrom AND t2.EffectiveTo注意部分:AND t1.ClockInDate BETWEEN t2.EffectiveFrom AND t2.EffectiveTo注意:在 SQL 代碼中df1是t1和df2是t2
查看完整描述

2 回答

?
翻翻過去那場(chǎng)雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊

所以在完成這個(gè)項(xiàng)目后,我獲得了更多的見識(shí)。我找到了一個(gè)解決方案,但希望有cleaner一個(gè)解決方案。但這有效:我們可以連接來自原始數(shù)據(jù)幀的行,這些行具有ClockIndate.isnull:


df_merge = pd.merge(df1, df2, on=['Company', 'Resource'], how='left')


df_filter = df_merge[df_merge.ClockInDate.between(df_merge.EffectiveFrom, df_merge.EffectiveTo) | df_merge.EffectiveFrom.isnull()]


df_final = pd.concat([df_filter, df1[df1.ClockInDate.isnull()]], sort=True)


print(df_final)

  ClockInDate Company EffectiveFrom EffectiveTo Resource

1  2019-02-09       A    2019-01-01  2099-12-31     ResA

3  2019-02-09       A    2019-01-01  2099-12-31     ResB

4  2019-02-09       A           NaT         NaT     ResC

5  2019-02-09       B           NaT         NaT     ResD

7  2019-02-09       B    2019-01-01  2099-12-31     ResE

9  2019-02-09       B    2019-01-01  2099-12-31     ResF

6         NaT       B           NaT         NaT     ResG


查看完整回答
反對(duì) 回復(fù) 2021-11-02
  • 2 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)