假設我有旅行開始和結束日期時間資訊的資料,并且我有 100 輛車。
我想在一列中組合和排序旅行開始日期和結束日期,并跟蹤公園區域內的車輛數量。如果司機開始旅行,車輛數量減少 1,如果旅行結束,車輛數量增加 1。
trips = {
'driver':['Tom', 'Tom', 'Max'],
'start': ['2022-01-03 13:56:03',
'2022-01-04 10:21:06',
'2022-01-04 11:38:39'],
'end': ['2022-01-03 15:39:14',
'2022-01-04 17:07:38',
'2022-01-04 16:06:42'],
}
df = pd.DataFrame(trips)
車輛數 = 100
輸出
----------------------------------------------------
date | driver | type | count
----------------------------------------------------
2022-01-03 13:56:03 | Tom | start | 99
2022-01-03 15:39:14 | Tom | end | 100
2022-01-04 10:21:06 | Tom | start | 99
2022-01-04 11:38:39 | Max | start | 98
2022-01-04 16:06:42 | Max | end | 99
2022-01-04 17:07:38 | Tom | end | 100
uj5u.com熱心網友回復:
您可以melt和cumsum±1 取決于開始/結束型別:
out = (df
.melt(id_vars='driver', var_name='type', value_name='date')
.sort_values(by='date', ignore_index=True)
.assign(count=lambda d: 100 d['type'].map({'start': -1, 'end': 1}).cumsum())
)
輸出:
driver type date count
0 Tom start 2022-01-03 13:56:03 99
1 Tom end 2022-01-03 15:39:14 100
2 Tom start 2022-01-04 10:21:06 99
3 Max start 2022-01-04 11:38:39 98
4 Max end 2022-01-04 16:06:42 99
5 Tom end 2022-01-04 17:07:38 100
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/487182.html
上一篇:將字串轉換為時間c#
下一篇:日期時間時區抓取Python
