Я постараюсь объяснить, с чем мне нужна помощь. У меня есть следующий df (тысячи, если не миллионы строк) с индексом datetime, как в примере ниже:
INDEX COL A COL B
2018-05-07 21:53:13.731 0.365127 9391.800000
2018-05-07 21:53:16.201 0.666127 9391.800000
2018-05-07 21:53:18.038 0.143104 9391.800000
2018-05-07 21:53:18.243 0.025643 9391.800000
2018-05-07 21:53:18.265 0.640484 9391.800000
2018-05-07 21:53:18.906 -0.100000 9391.793421
2018-05-07 21:53:19.829 0.559516 9391.800000
2018-05-07 21:53:19.846 0.100000 9391.800000
2018-05-07 21:53:19.870 0.006560 9391.800000
2018-05-07 21:53:20.734 0.666076 9391.800000
2018-05-07 21:53:20.775 0.666076 9391.800000
2018-05-07 21:53:28.607 0.100000 9391.800000
2018-05-07 21:53:28.610 0.041991 9391.800000
2018-05-07 21:53:29.283 -0.053518 9391.793421
2018-05-07 21:53:47.322 -0.046302 9391.793421
2018-05-07 21:53:49.182 0.100000 9391.800000
Я хотел бы сгруппировать строки с 5-секундными интервалами и выполнять (иногда сложные) вычисления для каждого 5-секундного интервала / подмножества.
Скажем, например, я хочу вычислить процент положительных и отрицательных значений в столбце А в каждом 5-секундном блоке.
2018-05-07 21:53:10
до 2018-05-07 21:53:15
содержит только одну строку, а столбец A является положительным, поэтому я бы создал новый столбец C с 100%
.
Точно так же от 2018-05-07 21:53:15
до 2018-05-07 21:53:20
имеет 8 строк в столбце A, 7 из которых положительные, а 1 из которых отрицательная. Таким образом, столбец C будет 87.5%
.
Я бы опубликовал пример кода, но я действительно не уверен, что лучший способ сделать это. Пример вывода (новый df) может быть примерно таким, как показано ниже, причем COL D - это просто минимальное число в COL B для этой 5-секундной группировки:
INDEX COL C COL D (MIN)
2018-05-07 21:53:10 100% 9391.800000
2018-05-07 21:53:15 12.5% 9391.793421
2018-05-07 21:53:20 100% 9391.800000
2018-05-07 21:53:25 66.7% 9391.793421
2018-05-07 21:53:30 nan nan
2018-05-07 21:53:35 nan nan
2018-05-07 21:53:40 nan nan
2018-05-07 21:53:45 100% 9391.793421
Пожалуйста, имейте в виду, что я хочу сделать много разных вычислений для каждой группы. Так что использование встроенных .sum()
, .mean()
, .agg()
и т. Д. Будет недостаточно для более сложных вычислений.
Ценю любую помощь и с удовольствием уточню вопрос, если это необходимо.