Недавно я узнал о пандах
и был рад видеть его аналитическую функциональность. Я пытаюсь преобразовать функции массива 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[:] в последних двух условиях ничего не делает для меня, но есть ли способ обусловить сумму строкой, в которой я нахожусь, без зацикливания? Моя цель состоит в том, чтобы не делать никаких циклов, а вместо этого использовать чисто векторные операции.