Вам нужно groupby
в часы вашего индекса, если у вас есть только один день измерений, это должно работать:
df.groupby(index.hour).apply(lambda df: linregress(df.T_am, df.Q_a)[0])
Если у вас есть несколько дней, я сначала создал бы столбец, содержащий ваш индексокругляется до часа, а затем группируется по этому индексу:
df['index_hour']=df.index.floor('h')
df.groupby('index_hour').apply(lambda df: linregress(df.T_am, df.Q_a)[0])
Если вы хотите сохранить несколько параметров из линейной регрессии, вы можете использовать следующий скрипт:
def extract_lr(x):
lr = linregress(x['T_am'], x['Q_a'])
return pd.Series([lr.slope, lr.intercept, lr.rvalue, lr.pvalue],
index=['slope', 'intercept', 'rvalue','pvalue'])
df.groupby('index_hour').apply(lambda x: extract_lr(x))
кредитует этот ответ .