После повторной выборки 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
таймсерии; вы можете использовать его для выбора целых строк в соответствии с последней строкой выше.