如何使用熊猫找到30分钟的平均流量,然后找到每天最多30分钟的平均流量?

时间:2018-07-09 01:10:07

标签: python python-3.x pandas datetime dataframe

我每天都有每分钟的流量数据。我想每天获取每30分钟的平均流量。然后,我想找到每天最大的30分钟平均流量。当我获得每天30分钟的最大平均流量后,我想将它们保存到显示每天最大平均流量的Excel工作表中。

import pandas as pd
import numpy as np
peakflow= pd.read_csv('P:\Waste Water\Totalizer Data\Main DAF\July_1_17_July_20_17.xls.csv')
peakflow['DateTime'] = pd.to_datetime(peakflow.DateTime)

这是我的数据框样本,称为Peakflow:

                     DateTime   Gallons
     0                     NaT  Average 
     1                     NaT      gpm 
     2     2017-07-01 00:00:00       743
     3     2017-07-01 00:01:00      1273
     4     2017-07-01 00:02:00      1256
     5     2017-07-01 00:03:00       723
     6     2017-07-01 00:04:00         0
     7     2017-07-01 00:05:00         0
     8     2017-07-01 00:06:00         0
     9     2017-07-01 00:07:00       455
     10    2017-07-01 00:08:00      1279
     11    2017-07-01 00:09:00      1258
     12    2017-07-01 00:10:00      1052
     13    2017-07-01 00:11:00         0
     14    2017-07-01 00:12:00         0
     15    2017-07-01 00:13:00         0
     16    2017-07-01 00:14:00       919
     17    2017-07-01 00:15:00      1271
     18    2017-07-01 00:16:00      1244
     19    2017-07-01 00:17:00       343
     20    2017-07-01 00:18:00         0
     21    2017-07-01 00:19:00         0
     22    2017-07-01 00:20:00         0
     23    2017-07-01 00:21:00      1248
     24    2017-07-01 00:22:00      1258
     25    2017-07-01 00:23:00       836
     26    2017-07-01 00:24:00         0
     27    2017-07-01 00:25:00         0
     28    2017-07-01 00:26:00       451
     29    2017-07-01 00:27:00      1284

我尝试使用以下代码:

 df2 = peakflow.resample(rule = '30Min').mean()

要重新采样数据帧峰值流,并每30分钟取一次平均值。然后将其保存到名为df2的新数据帧中,我将在其中使用以下代码:

 df3 = df2.resample(rule = '1D').max()

要每天对df2进行重新采样并找到Dayle最大阀值,然后将其保存到df3。

但是我的代码无法创建df2,并且出现以下错误:

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, 
but got an instance of 'RangeIndex'

你们是否对适用于该应用程序或此代码出了什么问题有任何想法?任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

您尝试重新采样的数据帧必须具有DateTime索引。

peakflow.set_index('DateTime', inplace=True)  
peakflow.index = pd.to_datetime(peakflow.index)    
peakflow.resample(rule = '30Min').mean()
#               Gallons
#DateTime              
#2017-07-01  603.321429
df3 = df2.resample(rule = '1D').max()    
#               Gallons
#DateTime              
#2017-07-01  603.321429