每天过滤时间序列数据框

我有一个很大的时间序列dataframe(pandas),有一个datetime索引。我试图dataframe根据每天一列的平均值来过滤它。但是,当我这样做时,出现以下错误:


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


这是我到目前为止的代码:


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' 和 ' Data' 大小不同;即它们的索引不匹配),但我不知道如何解决它。


有人有什么想法吗?


谢谢。


守着星空守着你
浏览 108回答 1
1回答

慕虎7371278

一旦您对 DataFrame 进行了重新采样,就很难(但并非不可能)将该结果(您的“ Mean”)与原始数据对齐。相反,请考虑使用groupby,如下所示:# example DataFramedf = pd.DataFrame(&nbsp; &nbsp; index=pd.date_range('2020-08-01', freq='3H', periods=20, name='date'),&nbsp; &nbsp; data=dict(&nbsp; &nbsp; &nbsp; &nbsp; x=np.random.normal(size=20),&nbsp; &nbsp; &nbsp; &nbsp; y=np.random.normal(size=20),&nbsp; &nbsp; ))def f(g, var):&nbsp; &nbsp; mean = g.mean()&nbsp; &nbsp; 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时间序列;您可以根据上面的最后一行使用它来选择整行。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python