簡體   English   中英

如何在多索引數據透視表中匯總Pandas Dataframe值是否存在?

[英]How can I sum Pandas Dataframe values in multi-index pivot whether they exist or not?

我有一個用以下代碼創建的數據透視表:

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語句從本質上對管理器進行硬編碼。 但是,必須有一個更優雅的方法。

具體來說,如何遍歷給定的這些:

  • 在給定拉取中,可能沒有任何時間分配給該功能(空)
  • 在給定的拉動下,可能沒有分配給經理的小時數(空)
  • 經理們可能會改變

我正在嘗試找到一種不錯的方法來對此進行迭代,而不必為每個函數和每個管理器都重新創建loc語句並添加它們-使用if語句來確定是否存在。 任何幫助表示贊賞!

獲取所有必需組合的列表,使您可以創建所有ID:

l = [('Function 1', ['Manager 5', 'Manager 6', 'Manager 7']),
     ('Function 2', ['Manager 2', 'Manager 6', 'Manager 7']),
     ('Function 3', ['Manager 1', 'Manager 3', 'Manager 6', 'Manager 7'])]

ids = [(x, z) for x,y in l for z in y]

然后,您可以.reindex + .sum

df.reindex(ids).sum(level=0)

               Paid Hours
Function Name            
Function 1          0.000
Function 2          0.730
Function 3         15.325

.reindex的輸出將是以下內容,僅包括所需的行,並用無數據的NaN填充,隨后在.sum其忽略。

                         Paid Hours
Function Name Manager              
Function 1    Manager 5         NaN
              Manager 6         NaN
              Manager 7         NaN
Function 2    Manager 2       0.730
              Manager 6         NaN
              Manager 7         NaN
Function 3    Manager 1       2.335
              Manager 3       0.510
              Manager 6       0.480
              Manager 7      12.000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM