Ресэмплинг Panda - Get Mean for a freq. Промежуток времени

У меня есть df с отметкой времени как INDEX (dtype='datetime64[ns]) и соответствующими значениями для 1Y:

                     values
Timestamp   
2014-01-01 00:00:00 20.155100
2014-01-01 00:15:00 7.586481
2014-01-01 00:30:00 73.115602
2014-01-01 00:45:00 5.936765
2014-01-01 01:00:00 82.130244

...

Теперь я хотел бы определить среднее значение всех значений между 08:00:00 и 20:00:00 для каждого дня, недели, месяца и квартала?

Является ли der правильным вариантом pd.resample? Если нет, какие рекомендации?


person Mischbot    schedule 28.07.2018    source источник


Ответы (1)


Получил некоторое решение:

Сначала импортируйте df следующим образом:

timestamp   values
0   2014-01-01 00:00:00 20.155100
1   2014-01-01 00:15:00 7.586481
2   2014-01-01 00:30:00 73.115602
3   2014-01-01 00:45:00 5.936765
4   2014-01-01 01:00:00 82.130244

затем примените столбец time.hour к df и примените свою условную логику:

df["hour"] = df["timestamp"].apply(lambda time: time.hour)

Output:

timestamp   values  hour
0   2014-01-01 00:00:00 20.155100   0
1   2014-01-01 00:15:00 7.586481    0
2   2014-01-01 00:30:00 73.115602   0
3   2014-01-01 00:45:00 5.936765    0
4   2014-01-01 01:00:00 82.130244   1

df_new = df[(df["hour"]>=8) & (df["hour"] < 20)].drop("hour", axis=1) #apply conditional logic to a Pandas DataFrame
df_new.set_index("timestamp").resample("1D").mean().head() #resample

Output:

               value
timestamp   
2014-01-01  46.139711
2014-01-02  48.794015
2014-01-03  48.818879
2014-01-04  50.030388
2014-01-05  55.124282
person Mischbot    schedule 28.07.2018