У меня есть сводная таблица, созданная со следующим кодом:
AdminPivot = pd.pivot_table(admindata, index=['Function Name', 'Manager'], values=['Paid Hours'])

+---------------+-----------+------------+
| Function Name | Manager | Paid Hours |
+---------------+-----------+------------+
| Function 1 | Manager 1 | 0.21 |
| Function 2 | Manager 2 | 0.73 |
| Function 3 | Manager 1 | 2.335 |
| | Manager 3 | 0.51 |
| | Manager 4 | 1.4 |
| | Manager 5 | 0.796 |
| | Manager 6 | 0.48 |
| | Manager 7 | 12 |
| Function 4 | Manager2 | 0.15 |
| Function 6 | Manager 1 | 0.87 |
| | Manager 3 | 0.31 |
+---------------+-----------+------------+
Я хотел бы сложитьобщее количество оплаченных часов только для подмножества менеджеров для каждой функции.То есть я заинтересован в получении этого:
Sum of Function 1 Total Paid Hours if managers is (Manager 5, 6, 7)
Sum of Function 2 Total Paid Hours if managers in (Manager 2, 6, 7)
Sum of Function 3 Total Paid Hours if managers in (Manager 1, 3, 6, 7)
Я могу легко проиндексировать сводку, чтобы получить значение для любого конкретного менеджера:
AdminPivot.loc[('Function 1', 'Manager 1'), 'Paid Hours']
Впоследствии можно повторить тезначения и по существу жесткий код менеджеров с заявлениями if.Тем не менее, должен быть более элегантный подход.
В частности, как можно выполнить итерации по этим данным:
- Возможно, для данной функции не было назначено ни одного часа (Null)
- Возможно, для менеджера в данном потоке не назначено часов (Null)
- Менеджеры могут измениться
Я пытаюсь найтихороший способ перебрать это без воссоздания операторов loc
для каждой функции и каждого менеджера и добавления их - с помощью оператора if
для того, существует ли он.Любая помощь приветствуется!