我有一個很大的時間序列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' 大小不同;即它們的索引不匹配),但我不知道如何解決它。有人有什么想法嗎?謝謝。
1 回答

慕虎7371278
TA貢獻1802條經驗 獲得超4個贊
一旦您對 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時間序列;您可以根據上面的最后一行使用它來選擇整行。
添加回答
舉報
0/150
提交
取消