从大熊猫数据帧由总和行以15个分钟垃圾箱数据帧的时间序列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从大熊猫数据帧由总和行以15个分钟垃圾箱数据帧的时间序列相关的知识,希望对你有一定的参考价值。
例如,我有这样一个数据帧:
ID Arrival_time
....
0 22 2019-01-01 05:34:10
1 23 2018-01-01 05:36:18
2 24 2018-01-01 05:44:24
3 25 2018-01-01 06:10:26
4 26 2018-01-01 06:08:28
5 27 2018-01-01 06:22:29
....
我需要它有一个时间序列箱15分钟的指标,并与在这15分钟的计数ARRIVAL_TIME条目列的新数据帧。
对于上述我希望是这样的:
COUNTED_ARRIVALS
....
2019-01-01 05:30 3
2019-01-01 05:45 0
2019-01-01 06:00 2
2019-01-01 06:15 1
2019-01-01 06:30 0
2019-01-01 06:45 0
2019-01-01 07:00 0
....
我怎么能在熊猫实现这一点?
答案
首先使用dt.floor
用于获取15 minutes
回合时间和使用groupby.count
与resample
:
df = (df.groupby(df['Arrival_time'].dt.floor('15T'))['Arrival_time'].count()
.resample('15T')
.mean()
.fillna(0, downcast='infer')
.reset_index(name='Counted_Arrival'))
print(df)
Arrival_time Counted_Arrival
0 2019-01-01 05:30:00 3
1 2019-01-01 05:45:00 0
2 2019-01-01 06:00:00 2
3 2019-01-01 06:15:00 1
改造前,原来的数据帧:
print(df)
ID Arrival_time
0 22 2019-01-01 05:34:10
1 23 2019-01-01 05:36:18
2 24 2019-01-01 05:44:24
3 25 2019-01-01 06:10:26
4 26 2019-01-01 06:08:28
5 27 2019-01-01 06:22:29
另一答案
您可以尝试使用pd.cut
的要获取的是有时间范围值的bin
df
1 time
0 21 2018-01-01 05:34:10
1 23 2018-01-01 05:36:18
2 24 2018-01-01 05:44:24
3 25 2018-01-01 06:10:26
4 26 2018-01-01 06:08:28
5 27 2018-01-01 06:22:29
bins = pd.date_range(start=df['time'].min().floor('15Min'),end=df['time'].max().floor('15Min'),freq='15Min')
df.groupby(pd.cut(df['time'],bins)).count()
日期:
1 time
time
(2018-01-01 05:30:00, 2018-01-01 05:45:00] 3 3
(2018-01-01 05:45:00, 2018-01-01 06:00:00] 0 0
(2018-01-01 06:00:00, 2018-01-01 06:15:00] 2 2
以上是关于从大熊猫数据帧由总和行以15个分钟垃圾箱数据帧的时间序列的主要内容,如果未能解决你的问题,请参考以下文章