Pandas Pivot_Table agg_func - PullRequest
       8

Pandas Pivot_Table agg_func

0 голосов
/ 28 февраля 2020

Heck Stackoverflow,


Newb ie здесь:)

Набор данных +-----------+-------+------+-----------+----------+---------------+ | Manager | Month | GOAL | COMPLETED | MTD_DIFF | MTD_DIFF_PERC | +-----------+-------+------+-----------+----------+---------------+ | PERSON 1 | 2-Feb | 18 | 8 | 10 | 0.444444 | | PERSON 2 | 1-Jan | 1 | 1 | 0 | 1 | | PERSON 2 | 2-Feb | 14 | 10 | 4 | 0.714286 | | PERSON 3 | 2-Feb | 15 | 17 | -2 | 1.133333 | | PERSON 4 | 2-Feb | 10 | 8 | 2 | 0.8 | | PERSON 5 | 1-Jan | 4 | 5 | -1 | 1.25 | | PERSON 5 | 2-Feb | 40 | 8 | 32 | 0.2 | | PERSON 6 | 1-Jan | 8 | 2 | 6 | 0.25 | | PERSON 6 | 2-Feb | 5 | 7 | -2 | 1.4 | | PERSON 7 | 1-Jan | 3 | 1 | 2 | 0.333333 | | PERSON 7 | 2-Feb | 3 | 5 | -2 | 1.666667 | +-----------+-------+------+-----------+----------+---------------+ Затем я делаю пивот FINAL_DF_PIVOT = FINAL_DF.pivot_table(index = 'Manager', columns = 'Month', values = ['COMPLETED', 'GOAL','MTD_DIFF','MTD_DIFF_PERC'], aggfunc={'COMPLETED': np.sum, 'GOAL': np.sum, 'MTD_DIFF': np.sum, 'MTD_DIFF_PERC':np.sum} , margins=True, margins_name='YTD') Результаты, которые я получаю

 +----------+-------+-----------+------+----------+---------------+
 | Manager  | Month | COMPLETED | GOAL | MTD_DIFF | MTD_DIFF_PERC |
 +----------+-------+-----------+------+----------+---------------+
 | PERSON 1 | 2-Feb |         8 |   18 |       10 |   0.444444444 |
 | PERSON 1 | YTD   |         8 |   18 |       10 |   0.444444444 |
 | PERSON 3 | 2-Feb |        17 |   15 |       -2 |   1.133333333 |
 | PERSON 3 | YTD   |        17 |   15 |       -2 |   1.133333333 |
 | PERSON 2 | 1-Jan |         1 |    1 |        0 |             1 |
 | PERSON 2 | 2-Feb |        10 |   14 |        4 |   0.714285714 |
 | PERSON 2 | YTD   |        11 |   15 |        4 |   1.714285714 |
 | PERSON 4 | 1-Jan |         1 |    3 |        2 |   0.333333333 |
 | PERSON 4 | 2-Feb |         5 |    3 |       -2 |   1.666666667 |
 | PERSON 4 | YTD   |         6 |    6 |        0 |             2 |
 | PERSON 5 | 2-Feb |         8 |   10 |        2 |           0.8 |
 | PERSON 5 | YTD   |         8 |   10 |        2 |           0.8 |
 | PERSON 6 | 1-Jan |         2 |    8 |        6 |          0.25 |
 | PERSON 6 | 2-Feb |         7 |    5 |       -2 |           1.4 |
 | PERSON 6 | YTD   |         9 |   13 |        4 |          1.65 |
 | PERSON 7 | 1-Jan |         5 |    4 |       -1 |          1.25 |
 | PERSON 7 | 2-Feb |         8 |   40 |       32 |           0.2 |
 | PERSON 7 | YTD   |        13 |   44 |       31 |          1.45 |
 | YTD      | 1-Jan |         9 |   16 |        7 |   2.833333333 |
 | YTD      | 2-Feb |        63 |  105 |       42 |   6.358730159 |
 | YTD      | YTD   |        72 |  121 |       49 |   9.192063492 |
 +----------+-------+-----------+------+----------+---------------+

Мне не нужно суммировать MTD_DIFF_PER C поле Я на самом деле хочу, чтобы общая сумма была завершена

Результаты, которые мне тоже нужно получить (меньший образец)

 | PERSON 2 | 1-Jan |         1 |    1 |        0 |             1 |
 | PERSON 2 | 2-Feb |        10 |   14 |        4 |   0.714285714 |
 | PERSON 2 | YTD   |        11 |   15 |        4 |  .73333333333 |

11, поделенное на 15 = 73% завершено. Я знаю, что нужно выполнить настройку для оси, просто не знаю, как выполнить sh то, что мне нужно.

Я также знаю, что это дает мне нужный мне результат, но не уверен, как добавить его в MTD_DIFF_PER C

 TOTALS = FINAL_DF.groupby(['Manager'])['COMPLETED'].sum()/FINAL_DF.groupby(['Manager'])['GOAL'].sum() 
...