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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中找到事件的開始時間和結(jié)束時間?

如何在python中找到事件的開始時間和結(jié)束時間?

守著星空守著你 2022-07-26 15:40:10
我有一個數(shù)據(jù)框由第 1 列即事件組成,第 2 列是日期時間:樣本數(shù)據(jù) Event   Time    0   2020-02-12 11:00:00    0   2020-02-12 11:30:00    2   2020-02-12 12:00:00    1   2020-02-12 12:30:00    0   2020-02-12 13:00:00    0   2020-02-12 13:30:00    0   2020-02-12 14:00:00    1   2020-02-12 14:30:00    0   2020-02-12 15:00:00    0   2020-02-12 15:30:00我想找到每個事件的開始時間和結(jié)束時間:所需數(shù)據(jù) Event  EventStartTime  EventEndTime    0   2020-02-12 11:00:00 2020-02-12 12:00:00    2   2020-02-12 12:00:00 2020-02-12 12:30:00    1   2020-02-12 12:30:00 2020-02-12 13:00:00    0   2020-02-12 13:00:00 2020-02-12 14:30:00    1   2020-02-12 14:30:00 2020-02-12 15:00:00注意:EventEndTime 是事件將值從值 1 更改為更改為 0 或任何其他值的時間,反之亦然
查看完整描述

3 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個贊

這是一種無需 for 循環(huán)即可獲得結(jié)果的方法。我假設(shè)輸入數(shù)據(jù)被讀入一個名為 df 的數(shù)據(jù)幀:


# Initialize the output df

dfout = pd.DataFrame()

dfout['Event'] = df['Event']

dfout['EventStartTime'] = df['Time']

現(xiàn)在,我創(chuàng)建了一個名為“change”的變量,它告訴您事件是否發(fā)生了變化。


dfout['change'] = df['Event'].diff()

這就是 dfout 現(xiàn)在的樣子:


   Event       EventStartTime  change

0      0  2020-02-12 11:00:00     NaN

1      0  2020-02-12 11:30:00     0.0

2      2  2020-02-12 12:00:00     2.0

3      1  2020-02-12 12:30:00    -1.0

4      0  2020-02-12 13:00:00    -1.0

5      0  2020-02-12 13:30:00     0.0

6      0  2020-02-12 14:00:00     0.0

7      1  2020-02-12 14:30:00     1.0

8      0  2020-02-12 15:00:00    -1.0

9      0  2020-02-12 15:30:00     0.0

現(xiàn)在,我繼續(xù)刪除事件未更改的行:


dfout = dfout.loc[dfout['change'] !=0 ,:]

現(xiàn)在,這將給我留下事件已更改的行。


接下來,當(dāng)前事件的事件結(jié)束時間就是下一個事件的開始時間。


dfout['EventEndTime'] = dfout['EventStartTime'].shift(-1)

數(shù)據(jù)框如下所示:


   Event       EventStartTime  change         EventEndTime

0      0  2020-02-12 11:00:00     NaN  2020-02-12 12:00:00

2      2  2020-02-12 12:00:00     2.0  2020-02-12 12:30:00

3      1  2020-02-12 12:30:00    -1.0  2020-02-12 13:00:00

4      0  2020-02-12 13:00:00    -1.0  2020-02-12 14:30:00

7      1  2020-02-12 14:30:00     1.0  2020-02-12 15:00:00

8      0  2020-02-12 15:00:00    -1.0                  NaN

如果不需要,您可以選擇刪除“更改”列以及最后一行。


查看完整回答
反對 回復(fù) 2022-07-26
?
慕俠2389804

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個贊

假設(shè)數(shù)據(jù)框是data:


current_event = None

result = []

for event, time in zip(data['Event'], data['Time']):

    if event != current_event:

        if current_event is not None:

            result.append([current_event, start_time, time])

        current_event, start_time = event, time

data = pandas.DataFrame(result, columns=['Event','EventStartTime','EventEndTime'])

訣竅是保存您的事件編號;如果下一個事件編號與保存的事件編號不同,則必須結(jié)束已保存的事件并開始新的事件。


查看完整回答
反對 回復(fù) 2022-07-26
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個贊

使用 group by 和 agg 以獲取所需格式的輸出。


df =pd.DataFrame([['0',11],['1',12],['1',13],['0',15],['1',16],['3',11]],columns=['Event','Time'] )

df.groupby(['Event']).agg(['first','last']).rename(columns={'first':'start-event','last':'end-event'})

輸出:


Event start-event   end-event   

0      11           15

1      12           16

3      11           11


查看完整回答
反對 回復(fù) 2022-07-26
  • 3 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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