我有一個資料框架
ID datetime
11 01-09-2021 10:00:00
11 01-09-2021 10: 15: 1511 01-09-2021 15: 00: 00
12 01-09-2021 15: 10: 00
11 01-09-2021 18: 00: 00
我需要在日期時間的基礎上添加周期,如果它增加到2個小時的話
。ID datetime period
11 01-09-2021 10:00:00 1
11 01-09-2021 10: 15: 15 1
11 01-09-2021 15:00:00 2
12 01-09-2021 15: 10: 00 2
11 01-09-2021 18: 00: 00 3
還有同樣的事情,但是基于ID和日期時間
ID datetime period
11 01-09-2021 10:00:00 1
11 01-09-2021 10: 15: 15 1
11 01-09-2021 15:00:00 2
12 01-09-2021 15: 10: 00 1
11 01-09-2021 18: 00: 00 3
我如何才能做到這一點?
uj5u.com熱心網友回復:
你可以通過Series.diff得到差異,轉換為小時數Series.dt.total_seconds,對2進行比較,并加上累積總分:
df['period'] = df['datetime']。 diff().dt.total_seconds().div(3600).gt(2) .cumsum() .add(1)
print (df)
ID日期時間段
0 11 2021 01-09 10: 00: 00 1
1 11 202101-09 10: 15: 15 1
2 11 202101-09 15: 00: 00 2
3 12 202101-09 15: 10: 00 2
4 11 202101-09 18: 00: 00 3
每組類似的想法:
f = lambda x: x.diff().dt. total_seconds().div(3600).gt(2).cumsum().add(1)
df['period'] = df.groupby('ID')['dateetime'].transform(f)
print (df)
ID日期時間段
0 11 2021 01-09 10: 00: 00 1
1 11 202101-09 10: 15: 15 1
2 11 202101-09 15: 00: 00 2
3 12 202101-09 15: 10: 00 1
4 11 202101-09 18: 00: 00 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/312009.html
標籤:
上一篇:谷歌表處理日期的QUERY函式
下一篇:計算一天中事件之間的時間
