我正在處理將一天分成作業班次。讓我們看一下我的示例代碼:
我想將時間分為 3 個班次,00:00 到 08:00 是 Shift1,08:00 到 16:00 將是 Shift2,直到 00:00 將是 Shift3。
我得到的是真的,但我想知道是否有任何優雅和更簡單的方法來做到這一點?
In: import pandas as pd data = [['24.12.2020 05:17:32', 6], ['24.12.2020 07:20:06', 5], ['24.12.2020 09:33:29', 9],['24.12.2020 14:21:54', 12], ['24.12.2020 18:52:01', 11],['24.12.2020 22:05:19', 4]] df = pd.DataFrame(data, columns = ['DateTime', 'Counter']) print(df)
資料框看起來像:
Out: DateTime Counter 0 24.12.2020 05:17:32 6 1 24.12.2020 07:20:06 5 2 24.12.2020 09:33:29 9 3 24.12.2020 14:21:54 12 4 24.12.2020 18:52:01 11 5 24.12.2020 22:05:19 4
In: df['DateTime'] = pd.to_datetime(df['DateTime']) df['Hour'] = df['DateTime'].dt.hour df['Hour'] = pd.to_numeric(df['Hour'],downcast="float") df['Shift1'] = (df['Hour']<8) df['Shift2'] = (df['Hour']>=8) & (df['Hour']<16) df['Shift3'] = (df['Hour']>=16) df['Shift1'] = df['Shift1'].astype(int) df['Shift2'] = df['Shift2'].astype(int) df['Shift3'] = df['Shift3'].astype(int) df['Shift1'] = df['Shift1'].replace([1,0], ['Shift1','']) df['Shift2'] = df['Shift2'].replace([1,0], ['Shift2','']) df['Shift3'] = df['Shift3'].replace([1,0], ['Shift3','']) df['SHIFTS'] = df['Shift1'] df['Shift2'] df['Shift3'] print(df)
Out: DateTime Counter Hour Shift1 Shift2 Shift3 SHIFTS 0 2020-12-24 05:17:32 6 5.0 Shift1 Shift1 1 2020-12-24 07:20:06 5 7.0 Shift1 Shift1 2 2020-12-24 09:33:29 9 9.0 Shift2 Shift2 3 2020-12-24 14:21:54 12 14.0 Shift2 Shift2 4 2020-12-24 18:52:01 11 18.0 Shift3 Shift3 5 2020-12-24 22:05:19 4 22.0 Shift3 Shift3
uj5u.com熱心網友回復:
嘗試SHIFTS在旋轉您的資料框之前創建列:
df['SHIFTS'] = df['DateTime'].astype('datetime64').dt.hour \
.floordiv(8).add(1).astype(str).radd('shift')
df = df.join(df.reset_index().pivot('index', 'SHIFTS', 'SHIFTS')).fillna('')
輸出:
>>> df
DateTime Counter SHIFTS shift1 shift2 shift3
0 24.12.2020 05:17:32 6 shift1 shift1
1 24.12.2020 07:20:06 5 shift1 shift1
2 24.12.2020 09:33:29 9 shift2 shift2
3 24.12.2020 14:21:54 12 shift2 shift2
4 24.12.2020 18:52:01 11 shift3 shift3
5 24.12.2020 22:05:19 4 shift3 shift3
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/418677.html
標籤:
上一篇:如何從訊息中洗掉特定用戶的反應?
