Pandas функция pivot_table, показывающая неверную сумму маржи - PullRequest
0 голосов
/ 04 августа 2020

У меня есть базовый набор данных (pd.DataFrame), к которому я пытаюсь применить функцию pivot_table. Когда я использую только один столбец в качестве «значений», я получаю правильную сумму полей. Однако, когда я использую список из двух столбцов в качестве «значений», итоговые суммы маржи становятся неверными. Я использую следующие коды [соответствующие выходные данные показаны рядом]:

Код:

DetailedTable_GBP.pivot_table(index=['Level','Index','Currency'], values=['Daily','MTD'], aggfunc=sum, margins=True)

Вывод:

                              Daily     MTD
 Level   Index     Currency  
-----------------------------------------------
 Foo     Apples    GBP        18,385   -3,962
 Bar     Oranges   GBP        4,444    -79,282
 All                          22,830   -83,369 

Код:

DetailedTable_GBP.pivot_table(index=['Level','Index','Currency'], values=['MTD'], aggfunc=sum, margins=True)

Вывод:

                              MTD
 Level   Index     Currency   
------------------------------------
 Foo     Apples    GBP       -3,962
 Bar     Oranges   GBP      -79,282
 All                        -83,244 

Что я могу сделать, чтобы получить sh правильную сумму полей с несколькими «значениями»?

Редактировать 1. Я понял, что получаю разные итогов, потому что в столбце «Ежедневно» моих базовых данных было NaN. Таким образом, на вопрос дан ответ. Приносим свои извинения за размещение вопроса. Мне следовало сначала тщательно проверить базовые данные.

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Поскольку у меня были значения NaN в моем базовом наборе данных (в частности, в столбце «Ежедневно»), применение fillna (0) к моему базовому набору данных решило проблему неверного итогового поля.

Правильный код:

DetailedTable_GBP.fillna(0).pivot_table(index=['Level','Index','Currency'], values=['Daily','MTD'], aggfunc=sum, margins=True)
0 голосов
/ 05 августа 2020
DetailedTable_GBP.pivot_table(index=['Level', 'Index', 'Currency'], 
                             values=['Daily', 'MTD'], 
                            aggfunc={'Daily': sum,'MTD': sum}, 
                            margins=True)
...