【问题标题】:Pandas find hourly rolling average熊猫找到每小时滚动平均值
【发布时间】:2019-11-24 17:13:23
【问题描述】:

我的数据集df 看起来像这样。这是一个基于minute 的数据集。

time, Open, High
2017-01-01 00:00:00, 1.2432, 1.1234
2017-01-01 00:01:00, 1.2432, 1.1234
2017-01-01 00:02:00, 1.2332, 1.1234
2017-01-01 00:03:00, 1.2132, 1.1234
...., ...., ....
2017-12-31 23:59:00, 1.2132, 1.1234

我想为Open 列找到每小时一次的rolling mean,但它应该是灵活的,以便我也可以为其他列找到每小时一次的rolling mean

我做了什么?

我可以找到daily rolling average,如下所示:

# Pandas code to find the rolling mean for a single day

df
.assign(1davg=df.rolling(window=1*24*60)['Open'].mean()) 
.groupby(df['time'].dt.date) 
.last() 

请注意,将这行代码(window=1*24*60 更改为 window=60)不起作用,因为我已经尝试过了。

新的output 应该如下所示:

time,                 Open,  High,   Open_hour_avg
2017-01-01 00:00:00, 1.2432, 1.1234,   1.2532
2017-01-01 01:00:00, 1.2432, 1.1234,   1.2632    
2017-01-01 02:00:00, 1.2332, 1.1234,   1.2332
2017-01-01 03:00:00, 1.2132, 1.1234,   1.2432
...., ...., ...., ....
2017-12-31 23:00:00, 1.2132, 1.1234,   1.2232

这里,

2017-01-01 00:00:00, 1.2432, 1.1234, 1.2532minute 的平均数据 midnight

2017-01-01 01:00:00, 1.2432, 1.1234, 1.2632minute 的平均数据1 AM

【问题讨论】:

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


【解决方案1】:

我们可以的

df['open_ave_hour']=df.groupby(df.time.dt.strftime('%H:%M:%S')).Open.mean().reindex(df.time.dt.strftime('%H:%M:%S')).to_numpy()

或者变换

df['open_ave_hour']=df.groupby(df.time.dt.strftime('%H:%M:%S')).Open.transform('mean')

【讨论】:

    【解决方案2】:

    这就是我的工作方式:

    import pandas as pd
    
    # After your CSV data is in a df
    
    df['time'] = pd.to_datetime(df['time'])
    df.index = df['time']
    df_mean = df.resample('H').mean()
    
    
    time,                 Open       High   
    2017-01-01 00:00:00 1.051488    1.051500     
    2017-01-01 01:00:00 1.051247    1.051275     
    2017-01-01 02:00:00 1.051890    1.051957     
    2017-01-01 03:00:00 1.051225    1.051290     
    ...., ...., ....
    2017-12-31 23:00:00 1.051225    1.051290     
    

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 2021-12-10
      • 2019-07-27
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2020-11-04
      相关资源
      最近更新 更多