Панды: Нахождение среднего из n строк, с переменной n - PullRequest
0 голосов
/ 25 июня 2018

У меня есть два кадра данных, назовите их A и B. A имеет столбцы elementID, startDate, endDate, а B имеет столбцы elementID, date, dataValue. Я хотел бы добавить «средний» столбец к A. Для любой конкретной строки в A, мы должны иметь row.average = B[(B.elementID==row.elementID) & (row.startDate <= B.date) & (row.endDate >= B.date)].mean().

В настоящее время я просто наивно зацикливаюсь на каждом столбце A и вычисляю B [(B.elementID == row.elementID) & (row.startDate <= B.date) & (row.endDate> = B.date) ].имею в виду(). Однако как A, так и B имеют порядка 10 миллионов строк, а даты начала / окончания могут быть на расстоянии до 2 лет, поэтому этот подход занимает слишком много времени.

Чтобы быть конкретным, А выглядит примерно так

ID    startDate   endDate
3093  2015-01-09  2015-01-23
3093  2015-01-13  2015-03-20
3093  2015-01-20  2015-02-27
3093  2015-01-26  2015-03-06
3093  2015-01-27  2015-04-17
3093  2015-02-01  2015-07-17
3093  2015-02-03  2015-02-27
3093  2015-02-04  2016-01-15
...

B выглядит как

ID   date             dataValue
512  2014-12-31       0.1285
3093 2014-12-31       0.1176
3101 2014-12-31       0.1591
3103 2015-01-12       0.3001
3105 2015-01-12       0.2306
3107 2015-01-12       0.1524
3107 2015-01-13       0.0000
3107 2015-01-14       0.1739
3112 2015-01-15       0.0370
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...