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

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

如果日期時(shí)間在某個(gè)時(shí)間范圍內(nèi),則在 Python 中加入兩個(gè)數(shù)據(jù)集,并創(chuàng)建一個(gè)“不匹配”數(shù)據(jù)集

如果日期時(shí)間在某個(gè)時(shí)間范圍內(nèi),則在 Python 中加入兩個(gè)數(shù)據(jù)集,并創(chuàng)建一個(gè)“不匹配”數(shù)據(jù)集

寶慕林4294392 2022-10-11 17:11:26
我有兩個(gè)數(shù)據(jù)集:df1 和 df2,如果日期時(shí)間在 df2 的 20 秒內(nèi),我希望列從 df1 合并在一起df1Connect                 Ended4/6/2020 1:15:21 PM     4/6/2020 2:05:18 PM3/31/2020 11:00:08 AM   3/31/2020 11:00:10 AM4/1/2020 10:00:05 PM    4/1/2020 12:00:05 PMdf2Start                   End4/6/2020 1:15:21 PM     4/6/2020 2:05:18 PM3/31/2020 11:00:10 AM   3/31/2020 11:00:14 AM期望的輸出:df3Match_Start1             Match_End1                     Match_Start2              Match_End24/6/2020 1:15:21 PM     4/6/2020 2:05:18 PM          4/6/2020 1:15:21 PM     4/6/2020 2:05:18 PM3/31/2020 11:00:08 AM   3/31/2020 11:00:10 AM        3/31/2020 11:00:10 AM   3/31/2020 11:00:14 AM    df4(不匹配)Unmatched_Start         Unmatched_end  4/1/2020 10:00:05 PM    4/1/2020 12:00:05 PM輸入:df1   :   '  Connect   Ended\n0    4/6/2020 1:15:21 PM     4/6/2020 2:05:18 PM\n1     3/31/2020 11:08:08 AM  3/31/2020 11:00:10 AM\n2   4/1/2020 10:00:05 PM    4/1/2020 12:00:05    PM'df2  Out[117]:  '    Start    End\n0    4/6/2020 1:15:21 PM    4/6/2020 2:05:18 PM\n1       3/31/2020 11:08:08 AM  3/31/2020 11:00:14 AM\n2                    NaN                    NaN'我在想什么:df2 = pd.merge_asof(df1, df2, on="Connect", by = "Ended", tolerance=pd.Timedelta('20s'), direction='backward')但是,如何合并 20 秒的條件,以及顯示不匹配的數(shù)據(jù)集?任何建議表示贊賞
查看完整描述

1 回答

?
溫溫醬

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

您需要讀入數(shù)據(jù)并轉(zhuǎn)換為日期時(shí)間格式 - 我用剪貼板讀入數(shù)據(jù)并在那里解析日期。其次,您需要按鍵對(duì)數(shù)據(jù)進(jìn)行排序(在這種情況下,鍵是 df1 的“連接”和 df2 的“開(kāi)始”)。在那之后 pandas merge_asof就足夠了。請(qǐng)注意,合并只能在一個(gè)鍵上發(fā)生,而不是多個(gè):

對(duì)數(shù)據(jù)框進(jìn)行排序

df1 = df1.sort_values(['Connect','Ended'])

df2 = df2.sort_values(['Start','End'])

合并數(shù)據(jù)框


merger = pd.merge_asof(df1,df2,

                       left_on='Connect',

                       right_on='Start',

                       tolerance = pd.Timedelta('20s'),

                       direction='forward')


merger


     Connect                   Ended            Start              End

0   2020-03-31 11:00:08 2020-03-31 11:00:10 2020-03-31 11:00:10 2020-03-31 11:00:14

1   2020-04-01 22:00:05 2020-04-01 12:00:05        NaT             NaT

2   2020-04-06 13:15:21 2020-04-06 14:05:18 2020-04-06 13:15:21 2020-04-06 14:05:18

應(yīng)該很容易選擇匹配和不匹配的行:


matched = merger.dropna()

matched



         Connect              Ended                    Start         End

0   2020-03-31 11:00:08 2020-03-31 11:00:10 2020-03-31 11:00:10 2020-03-31 11:00:14

2   2020-04-06 13:15:21 2020-04-06 14:05:18 2020-04-06 13:15:21 2020-04-06 14:05:18


unmatched = merger.loc[merger.isna().any(axis=1)]

unmatched


    Connect               Ended           Start End

1   2020-04-01 22:00:05 2020-04-01 12:00:05 NaT NaT

希望它就足夠了......如果你被踩到,文檔有更多的例子來(lái)指導(dǎo)你


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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