Количество значений в группе
Всем привет) Завис на таком моменте :
В начальном датафрейме в колонке 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