我想有一定的時間桶,然后找到每個時間桶的差異來分析。
例如,
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'A-1 A-1 A-1 A-1 A-1 A-1'.split(),
'Date':'23.10.2021 23.10.2021 23.10.2021 23.10.2021 23.10.2021 23.10.2021'.split(),
'Time': '06:05:31 06:11:13 06:19:22 06:25:03 06:33:12 06:44:05'.split(),
'Cumulative': '12 17 19 23 29 38'.split()})
print(df)
出去:
A Date Time Cumulative
0 A-1 23.10.2021 06:05:31 12
1 A-1 23.10.2021 06:11:13 17
2 A-1 23.10.2021 06:19:22 19
3 A-1 23.10.2021 06:25:03 23
4 A-1 23.10.2021 06:33:12 29
5 A-1 23.10.2021 06:44:05 38
我想要的是以 15 分鐘為間隔的時間上限,并找到每個時間的差異,第一步:
A Date Time Cumulative TimeBuckets
0 A-1 23.10.2021 06:05:31 12 06:15:00
1 A-1 23.10.2021 06:11:13 17 06:15:00
2 A-1 23.10.2021 06:19:22 19 06:30:00
3 A-1 23.10.2021 06:25:03 23 06:30:00
4 A-1 23.10.2021 06:33:12 29 06:45:00
5 A-1 23.10.2021 06:44:05 38 06:45:00
并且在最后階段作為不同的資料幀,每個時間桶的每個最小值和最大值的差異將被寫入:
A Diff TimeBuckets
0 A-1 5 06:15:00
1 A-1 4 06:30:00
2 A-1 8 06:45:00
uj5u.com熱心網友回復:
IIUC,您可以使用dt.ceiland GroupBy.agg:
(df.assign(Cumulative=df['Cumulative'].astype(int),
TimeBuckets=pd.to_datetime(df['Time']).dt.ceil('15min').dt.time
)
.groupby('TimeBuckets', as_index=False)
.agg({'A': 'first', 'Cumulative': lambda x: x.max()-x.min()})
)
輸出:
TimeBuckets A Cumulative
0 06:15:00 A-1 5
1 06:30:00 A-1 4
2 06:45:00 A-1 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/436862.html
