在pandas中重新取样:设置时间的起始值

时间:2017-10-18 11:21:42

标签: python pandas

我正在使用pandas对数据帧进行排序,并计算落入一小时间隔的值(行)数。我的数据框名为col_times,如下所示:

enter image description here

然后我使用col_times.set_index('date_time').resample(rule = 'H')['Uhrzeit'].count()来计算每小时的值。这从14:00:00开始,因为现在有价值,最早的时间是14:57:07。但是,我需要在10:00:00开始计数,因为我有逻辑并且我需要在各种数据帧上应用它,我需要看到10:00:00和10:59之间没有值: 59。如何设置重采样功能呢?

1 个答案:

答案 0 :(得分:1)

您必须添加日期从10:00开始的新行:

col_times = col_times.set_index('date_time')
date = pd.to_datetime(col_times.index.min().replace(hour=10, minute=0))
col_times.loc[date] = np.nan
print (col_times)
                          Datum   Uhrzeit
date_time                                
2017-10-16 14:57:07  16.10.2017  14:57:07
2017-10-16 14:57:49  16.10.2017  14:57:49
2017-10-16 14:57:57  16.10.2017  14:57:57
2017-10-16 14:58:11  16.10.2017  14:58:11
2017-10-16 14:58:21  16.10.2017  14:58:21
2017-10-16 10:00:07         NaN       NaN

df = col_times.resample(rule = 'H')['Uhrzeit'].count()
print (df)
date_time
2017-10-16 10:00:00    0
2017-10-16 11:00:00    0
2017-10-16 12:00:00    0
2017-10-16 13:00:00    0
2017-10-16 14:00:00    5
Freq: H, Name: Uhrzeit, dtype: int64