每天筛选时间序列数据帧



我有一个大的时间序列dataframe(pandas(,具有datetime索引。我试图根据每天一列的平均值来筛选dataframe。然而,当我这样做时,我会得到以下错误:

ValueError:只能比较标记相同的系列对象

这是我迄今为止的代码:

def filter(Data,Variation):
Mean = Data['column1'].resample('d').mean().dropna()
Min = Mean * (1 - Variation)
Max = Mean * (1 + Variation)
Data = Data[Data['column1'] > Min]
Data = Data[Data['column1'] < Max]
return Data

我想我知道出了什么问题("Min"one_answers"Data"大小不同;即它们的索引不匹配(,但我不知道如何修复它。

有人有什么想法吗?

谢谢。

一旦对DataFrame进行了重新采样,就很难(但并非不可能(将结果("Mean"(与原始数据对齐。

相反,请考虑使用groupby,如下所示:

# example DataFrame
df = pd.DataFrame(
index=pd.date_range('2020-08-01', freq='3H', periods=20, name='date'),
data=dict(
x=np.random.normal(size=20),
y=np.random.normal(size=20),
))
def f(g, var):
mean = g.mean()
return (mean * (1 - var) < g) & (g < mean * (1 + var))
selx = df.groupby(pd.Grouper(freq='d')).x.apply(f, var=3.0)
df.loc[selx]

注:selx只是一个bool时间序列;您可以使用它按照上面的最后一行选择整行。

最新更新