Python / Pandas: сложные SUMIFS в Excel на разных фреймах - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю с двумя фреймами данных, один из которых называется Sales, изображенный здесь enter image description here

И еще один фрейм данных, называемый Claims, который изображен здесь enter image description here

Я хотел бы создать новый столбец с именем "SUMIFS" в другом фрейме данных под названием "Подмножество" (т. Е. Подмножество ['SUMIFS'] = ...), и мне интересно, возможно лиВыполните операцию SUMIFS, как Excel, на данных фреймах в пандах.Критерии для SUMIFS будут следующими:

sumrange - Продажи ['Количество автомобилей']

Критерии 1 - Продажи ['АвтомобильМесяц / год производства '] = Заявки [' Месяц / год выпуска автомобилей ']

Критерии 2 - Продажи [' DIS с даты запуска RU '] <Заявки [' Заявка DIS ']</p>

Вот кадр данных продаж в форме электронной таблицы

enter image description here

Вот кадр данных требований в форме электронной таблицы

enter image description here

И, наконец, вот оригинальная формула, которую я использую в Excel, которую я хотел бы преобразовать в Python: = SUMIFS (Sales! $ D $ 2: $D $ 1156, Продажи! $ A $ 2: $ A $ 1156, Заявки! B2, Продажи! $ E $ 2: $ E $ 1156, <"& Заявки! O2) </p>

1 Ответ

0 голосов
/ 20 февраля 2019

Если у вас уже есть два фрейма данных в Python, вы можете просто сделать это.Примечание. Это будет работать только в том случае, если оба кадра данных отсортированы.(Если у вас есть столбец идентификатора, сортируйте его перед запуском следующего кода)

Sales['Vehicle Count'][
(Sales['Vehicle Production Month/Year'] == Claims['Vehicle Production Month/Year'])
& ['DIS since RUN DATE'] < Claims['Claim DIS'])
].sum()

Я, по сути, фильтрую данные по двум условиям if, так что осталось то, что вам нужно.Все, что вам нужно сделать, это подвести итог.(Это прямое сравнение, целый ряд другой серией)

...