Создание Excel-подобного SUMIFS в пандах

Недавно я узнал о пандахи был рад видеть его аналитическую функциональность. Я пытаюсь преобразовать функции массива Excel в эквивалент Pandas для автоматизации электронных таблиц, которые я создал для создания отчетов об атрибуции производительности. В этом примере я создал новый столбец в Excel на основе условий в других столбцах:

={SUMIFS($F$10:$F$4518,$A$10:$A$4518,$C$4,$B$10:$B$4518,0,$C$10:$C$4518," ",$D$10:$D$4518,$D10,$E$10:$E$4518,$E10)}

Формула суммирует значения в массиве "F" (веса безопасности) на основе определенных условий. Массив "A" (portfolio ID) - это определенное число, массив "B" (идентификатор безопасности) равен нулю, массив "C" (описание группы) - "", массив "D" (дата начала) - это дата строки, в которой я нахожусь, а массив "E" (конечная дата) - это дата строки, в которой я нахожусь.

В Pandas я использую DataFrame. Создание нового столбца на кадре данных с первыми тремя условиями является простым,но мне трудно с последними двумя условиями.

reportAggregateDF['PORT_WEIGHT'] = reportAggregateDF['SEC_WEIGHT_RATE']
          [(reportAggregateDF['PORT_ID'] == portID) &
           (reportAggregateDF['SEC_ID'] == 0) &
           (reportAggregateDF['GROUP_LIST'] == " ") & 
           (reportAggregateDF['START_DATE'] == reportAggregateDF['START_DATE'].ix[:]) & 
           (reportAggregateDF['END_DATE'] == reportAggregateDF['END_DATE'].ix[:])].sum()

Очевидно, что .ix[:] в последних двух условиях ничего не делает для меня, но есть ли способ обусловить сумму строкой, в которой я нахожусь, без зацикливания? Моя цель состоит в том, чтобы не делать никаких циклов, а вместо этого использовать чисто векторные операции.

5
задан piRSquared 4 January 2017 в 23:19
поделиться