【问题标题】:How to use Pandas to find 30 min average flows and then find max 30 min average flow per day?如何使用 Pandas 找到 30 分钟平均流量,然后找到每天最大 30 分钟平均流量?
【发布时间】:2023-03-22 08:22:02
【问题描述】:

我有每天每分钟的流量数据。我想每天每 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()

重新采样数据帧 peakflow 并每 30 分钟取平均值。然后将其保存到一个名为 df2 的新数据框中,我将在其中使用此代码:

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

每天重新采样 df2 并找到 dayle max 值,然后将其保存到 df3。

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

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

你们有什么想法可以用于此应用程序或此代码出了什么问题吗?任何帮助将不胜感激。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    您尝试重新采样的数据框必须具有 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
    

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2021-11-10
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 2020-05-19
      相关资源
      最近更新 更多