Python 熊猫重采样中使用基参数的不同行为取决于重采样频率

Python 熊猫重采样中使用基参数的不同行为取决于重采样频率,python,pandas,dataframe,matplotlib,resampling,Python,Pandas,Dataframe,Matplotlib,Resampling,我正在使用pandas重采样与“base”论点作斗争: 下面是一个5分钟数据的最小示例。我正在使用熊猫0.25.1。 目的是获得窗口大小为24小时的滚动平均值,但每小时仅一次(绿点)。 这就是为什么我在熊猫重采样和移位中使用“base”参数的原因 如果重采样频率为23小时,则一切都如预期的那样(上部子批次)。 但对于24小时(较低的子批次),有一种不同的行为:基本参数似乎没有任何效果,绿点重叠 编辑澄清:我想应用的函数可以是任意函数,而不必是“mean()”。我使用“mean()”只是为了方便

我正在使用pandas重采样与“base”论点作斗争:

下面是一个5分钟数据的最小示例。我正在使用熊猫0.25.1。 目的是获得窗口大小为24小时的滚动平均值,但每小时仅一次(绿点)。 这就是为什么我在熊猫重采样和移位中使用“base”参数的原因

如果重采样频率为23小时,则一切都如预期的那样(上部子批次)。 但对于24小时(较低的子批次),有一种不同的行为:基本参数似乎没有任何效果,绿点重叠

编辑澄清:我想应用的函数可以是任意函数,而不必是“mean()”。我使用“mean()”只是为了方便

我怎样才能解决这个问题

提前非常感谢

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
%matplotlib inline

register_matplotlib_converters()

df_5min = pd.DataFrame()
df_5min['DATETIME']=pd.date_range("2020-01-13 00:00:00", "2020-01-15 23:55:00", freq="5min")
df_5min.set_index('DATETIME', inplace=True)

t=np.linspace(0,6.28*3,len(df_5min.index))
df_5min['RAW']=np.cos(t)*t+t

df_5min['RAW_rolling_24h']=df_5min['RAW'].rolling(pd.Timedelta('24 hour')).mean()

result=[]
for base in range(0,24, 1):
    s=(df_5min['RAW'].resample(pd.Timedelta('24 hour'), base=base, loffset=pd.Timedelta('24 hour')).mean())
    s.rename('RAW_resampled_24h', inplace=True)
    result.append(s)
df_5min_resampled_24h = pd.concat(result)


df_5min['RAW_rolling_23h']=df_5min['RAW'].rolling(pd.Timedelta('23 hour')).mean()

result=[]
for base in range(0,23, 1):
    s=(df_5min['RAW'].resample(pd.Timedelta('23 hour'), base=base, loffset=pd.Timedelta('23 hour')).mean())
    s.rename('RAW_resampled_23h', inplace=True)
    result.append(s)
df_5min_resampled_23h = pd.concat(result)


fig, ax = plt.subplots(2, 1, figsize=(17,12),sharex=True)
ax[0].plot(df_5min['RAW'], color='blue', label='RAW')
ax[0].plot(df_5min['RAW_rolling_23h'], color='red', label='RAW rolling mean 23h')
ax[0].plot(df_5min_resampled_23h, 'o', color='green',alpha=0.3, label='RAW resampled 23h sliding base')
ax[0].legend(loc='upper left')

ax[1].plot(df_5min['RAW'], color='blue', label='RAW')
ax[1].plot(df_5min['RAW_rolling_24h'], color='red', label='RAW rolling mean 24h')
ax[1].plot(df_5min_resampled_24h, 'o', color='green',alpha=0.3, label='RAW resampled 24h sliding base')
ax[1].legend(loc='upper left')

ax[0].set_xlim("2020-01-13 00:00:00", "2020-01-16 00:30:00")
plt.show()

也许可以看看这里,谢谢,但我想这对我一点帮助都没有。这似乎是一个错误-重新采样可以正常工作任意小时数,而不是24小时的整数因子(也许这与导致错误的逻辑错误有关。我建议在github上打开一个问题,但您可能需要同时手动进行重采样。谢谢。我刚刚仔细研究了一下。我不确定这是否是一个bug,我想这只是基参数的工作方式。我还看到了一个ogithub上针对步长为的滚动窗口的笔请求: