Количество значений в группе

Всем привет) Завис на таком моменте :

В начальном датафрейме в колонке 5 есть отрицательные и положительные значения:

                                0        2        3  5
    0     2021-03-23 07:06:27.758  1.19236  1.19237  6
    1     2021-03-23 07:06:31.898  1.19237  1.19238  6
    2     2021-03-23 07:06:33.196  1.19237  1.19240  4
    3     2021-03-23 07:06:33.919  1.19237  1.19238 -4
    4     2021-03-23 07:06:36.596  1.19237  1.19239  4
    ...                       ...      ...      ... ..
    87309 2021-03-24 09:01:07.234  1.18443  1.18462  4
    87310 2021-03-24 09:01:07.640  1.18443  1.18461 -4
    87311 2021-03-24 09:01:07.742  1.18443  1.18460 -4
    87312 2021-03-24 09:01:08.201  1.18443  1.18461  4
    87313 2021-03-24 09:01:14.891  1.18444  1.18461  2

я группирую данные по одной минуте таким методом (спасибо сообществу за помощь) :

funcs = {
    "bid_open": (2, 'first'),
    "bid_close": (2, 'last'),
    "tiks": (0, 'size'),
    "ask_open": (3, 'first'),
    "ask_close": (3, 'last'),
    "bid_min": (2, 'min'),
    "bid_max": (2, 'max'),
    "ask_min": (3, 'min'),
    "ask_max": (3, 'max'),
    
}
res = df.groupby(pd.Grouper(key=0, freq="1T")).agg(**funcs)

Вопрос: каким методом в функции я смогу вытащить отрицательные и положительные значения ??


Ответы (1 шт):

Автор решения: strawdog

При исходных:

import pandas as pd
import numpy as np

data = np.random.randint(-10, 10, 240)
times = pd.date_range(start='30.03.2021',periods=240, freq="s")
df = pd.DataFrame({0:times, 1:data})

df:

                      0   1
0   2021-03-30 00:00:00  -1
1   2021-03-30 00:00:01   9
2   2021-03-30 00:00:02  -4
3   2021-03-30 00:00:03   1
4   2021-03-30 00:00:04 -10
..                  ...  ..
235 2021-03-30 00:03:55  -1
236 2021-03-30 00:03:56   1
237 2021-03-30 00:03:57   4
238 2021-03-30 00:03:58  -6
239 2021-03-30 00:03:59  -1

считаем количество значений, меньших, чем 0

res = df.groupby(pd.Grouper(key=0, freq="1T")).agg({1:lambda x: x.lt(0).sum()})

res:

                      1
0                      
2021-03-30 00:00:00  26
2021-03-30 00:01:00  25
2021-03-30 00:02:00  35
2021-03-30 00:03:00  31
→ Ссылка